diff --git a/src/writer/hlsl/generator_impl_case_test.cc b/src/writer/hlsl/generator_impl_case_test.cc
index 93e80a6..6ecd755 100644
--- a/src/writer/hlsl/generator_impl_case_test.cc
+++ b/src/writer/hlsl/generator_impl_case_test.cc
@@ -23,17 +23,15 @@
 using HlslGeneratorImplTest_Case = TestHelper;
 
 TEST_F(HlslGeneratorImplTest_Case, Emit_Case) {
-  auto* body = Block(create<ast::BreakStatement>());
-  ast::CaseSelectorList lit;
-  lit.push_back(Literal(5));
-  auto* c = create<ast::CaseStatement>(lit, body);
-  WrapInFunction(c);
+  auto* s = Switch(1, Case(Literal(5), Block(create<ast::BreakStatement>())),
+                   DefaultCase());
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  case 5: {
     break;
   }
@@ -41,16 +39,14 @@
 }
 
 TEST_F(HlslGeneratorImplTest_Case, Emit_Case_BreaksByDefault) {
-  ast::CaseSelectorList lit;
-  lit.push_back(Literal(5));
-  auto* c = create<ast::CaseStatement>(lit, Block());
-  WrapInFunction(c);
+  auto* s = Switch(1, Case(Literal(5), Block()), DefaultCase());
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  case 5: {
     break;
   }
@@ -58,17 +54,16 @@
 }
 
 TEST_F(HlslGeneratorImplTest_Case, Emit_Case_WithFallthrough) {
-  auto* body = Block(create<ast::FallthroughStatement>());
-  ast::CaseSelectorList lit;
-  lit.push_back(Literal(5));
-  auto* c = create<ast::CaseStatement>(lit, body);
-  WrapInFunction(c);
+  auto* s =
+      Switch(1, Case(Literal(5), Block(create<ast::FallthroughStatement>())),
+             DefaultCase());
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  case 5: {
     /* fallthrough */
   }
@@ -76,18 +71,16 @@
 }
 
 TEST_F(HlslGeneratorImplTest_Case, Emit_Case_MultipleSelectors) {
-  auto* body = Block(create<ast::BreakStatement>());
-  ast::CaseSelectorList lit;
-  lit.push_back(Literal(5));
-  lit.push_back(Literal(6));
-  auto* c = create<ast::CaseStatement>(lit, body);
-  WrapInFunction(c);
+  auto* s = Switch(
+      1, Case({Literal(5), Literal(6)}, Block(create<ast::BreakStatement>())),
+      DefaultCase());
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  case 5:
   case 6: {
     break;
@@ -96,15 +89,14 @@
 }
 
 TEST_F(HlslGeneratorImplTest_Case, Emit_Case_Default) {
-  auto* body = Block(create<ast::BreakStatement>());
-  auto* c = create<ast::CaseStatement>(ast::CaseSelectorList{}, body);
-  WrapInFunction(c);
+  auto* s = Switch(1, DefaultCase(Block(create<ast::BreakStatement>())));
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  default: {
     break;
   }
diff --git a/src/writer/msl/generator_impl_case_test.cc b/src/writer/msl/generator_impl_case_test.cc
index 4b8cd34..42b9482 100644
--- a/src/writer/msl/generator_impl_case_test.cc
+++ b/src/writer/msl/generator_impl_case_test.cc
@@ -23,17 +23,15 @@
 using MslGeneratorImplTest = TestHelper;
 
 TEST_F(MslGeneratorImplTest, Emit_Case) {
-  auto* body = Block(create<ast::BreakStatement>());
-  ast::CaseSelectorList lit;
-  lit.push_back(Literal(5));
-  auto* c = create<ast::CaseStatement>(lit, body);
-  WrapInFunction(c);
+  auto* s = Switch(1, Case(Literal(5), Block(create<ast::BreakStatement>())),
+                   DefaultCase());
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  case 5: {
     break;
   }
@@ -41,16 +39,14 @@
 }
 
 TEST_F(MslGeneratorImplTest, Emit_Case_BreaksByDefault) {
-  ast::CaseSelectorList lit;
-  lit.push_back(Literal(5));
-  auto* c = create<ast::CaseStatement>(lit, Block());
-  WrapInFunction(c);
+  auto* s = Switch(1, Case(Literal(5), Block()), DefaultCase());
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  case 5: {
     break;
   }
@@ -58,17 +54,16 @@
 }
 
 TEST_F(MslGeneratorImplTest, Emit_Case_WithFallthrough) {
-  auto* body = Block(create<ast::FallthroughStatement>());
-  ast::CaseSelectorList lit;
-  lit.push_back(Literal(5));
-  auto* c = create<ast::CaseStatement>(lit, body);
-  WrapInFunction(c);
+  auto* s =
+      Switch(1, Case(Literal(5), Block(create<ast::FallthroughStatement>())),
+             DefaultCase());
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  case 5: {
     /* fallthrough */
   }
@@ -76,18 +71,16 @@
 }
 
 TEST_F(MslGeneratorImplTest, Emit_Case_MultipleSelectors) {
-  auto* body = Block(create<ast::BreakStatement>());
-  ast::CaseSelectorList lit;
-  lit.push_back(Literal(5));
-  lit.push_back(Literal(6));
-  auto* c = create<ast::CaseStatement>(lit, body);
-  WrapInFunction(c);
+  auto* s = Switch(
+      1, Case({Literal(5), Literal(6)}, Block(create<ast::BreakStatement>())),
+      DefaultCase());
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  case 5:
   case 6: {
     break;
@@ -96,15 +89,14 @@
 }
 
 TEST_F(MslGeneratorImplTest, Emit_Case_Default) {
-  auto* body = Block(create<ast::BreakStatement>());
-  auto* c = create<ast::CaseStatement>(ast::CaseSelectorList{}, body);
-  WrapInFunction(c);
+  auto* s = Switch(1, DefaultCase(Block(create<ast::BreakStatement>())));
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  default: {
     break;
   }
diff --git a/src/writer/wgsl/generator_impl_case_test.cc b/src/writer/wgsl/generator_impl_case_test.cc
index 04538cc..e03ee56 100644
--- a/src/writer/wgsl/generator_impl_case_test.cc
+++ b/src/writer/wgsl/generator_impl_case_test.cc
@@ -22,17 +22,15 @@
 using WgslGeneratorImplTest = TestHelper;
 
 TEST_F(WgslGeneratorImplTest, Emit_Case) {
-  auto* body = Block(create<ast::BreakStatement>());
-  ast::CaseSelectorList lit;
-  lit.push_back(Literal(5));
-  auto* c = create<ast::CaseStatement>(lit, body);
-  WrapInFunction(c);
+  auto* s = Switch(1, Case(Literal(5), Block(create<ast::BreakStatement>())),
+                   DefaultCase());
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  case 5: {
     break;
   }
@@ -40,18 +38,16 @@
 }
 
 TEST_F(WgslGeneratorImplTest, Emit_Case_MultipleSelectors) {
-  auto* body = Block(create<ast::BreakStatement>());
-  ast::CaseSelectorList lit;
-  lit.push_back(Literal(5));
-  lit.push_back(Literal(6));
-  auto* c = create<ast::CaseStatement>(lit, body);
-  WrapInFunction(c);
+  auto* s = Switch(
+      1, Case({Literal(5), Literal(6)}, Block(create<ast::BreakStatement>())),
+      DefaultCase());
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  case 5, 6: {
     break;
   }
@@ -59,15 +55,14 @@
 }
 
 TEST_F(WgslGeneratorImplTest, Emit_Case_Default) {
-  auto* body = Block(create<ast::BreakStatement>());
-  auto* c = create<ast::CaseStatement>(ast::CaseSelectorList{}, body);
-  WrapInFunction(c);
+  auto* s = Switch(1, DefaultCase(Block(create<ast::BreakStatement>())));
+  WrapInFunction(s);
 
   GeneratorImpl& gen = Build();
 
   gen.increment_indent();
 
-  ASSERT_TRUE(gen.EmitCase(c)) << gen.error();
+  ASSERT_TRUE(gen.EmitCase(s->body()[0])) << gen.error();
   EXPECT_EQ(gen.result(), R"(  default: {
     break;
   }
