diff --git a/src/reader/wgsl/parser_impl_test.cc b/src/reader/wgsl/parser_impl_test.cc
index c4fa442..890be8c 100644
--- a/src/reader/wgsl/parser_impl_test.cc
+++ b/src/reader/wgsl/parser_impl_test.cc
@@ -28,12 +28,13 @@
   ASSERT_TRUE(p->Parse()) << p->error();
 }
 
-TEST_F(ParserImplTest, DISABLED_Parses) {
+TEST_F(ParserImplTest, Parses) {
   auto p = parser(R"(
 import "GLSL.std.430" as glsl;
 
 [[location 0]] var<out> gl_FragColor : vec4<f32>;
 
+entry_point vertex = main;
 fn main() -> void {
   gl_FragColor = vec4<f32>(.4, .2, .3, 1);
 }
@@ -42,11 +43,12 @@
 
   auto m = p->module();
   ASSERT_EQ(1, m.imports().size());
-
-  // TODO(dsinclair) check rest of AST ...
+  ASSERT_EQ(1, m.entry_points().size());
+  ASSERT_EQ(1, m.functions().size());
+  ASSERT_EQ(1, m.global_variables().size());
 }
 
-TEST_F(ParserImplTest, DISABLED_HandlesError) {
+TEST_F(ParserImplTest, HandlesError) {
   auto p = parser(R"(
 import "GLSL.std.430" as glsl;
 
@@ -56,7 +58,7 @@
 
   ASSERT_FALSE(p->Parse());
   ASSERT_TRUE(p->has_error());
-  EXPECT_EQ(p->error(), "4:15: missing return type for function");
+  EXPECT_EQ(p->error(), "4:15: unable to determine function return type");
 }
 
 TEST_F(ParserImplTest, GetRegisteredType) {
diff --git a/src/reader/wgsl/parser_test.cc b/src/reader/wgsl/parser_test.cc
index fa06290..081deba 100644
--- a/src/reader/wgsl/parser_test.cc
+++ b/src/reader/wgsl/parser_test.cc
@@ -30,7 +30,7 @@
   ASSERT_TRUE(p.Parse()) << p.error();
 }
 
-TEST_F(ParserTest, DISABLED_Parses) {
+TEST_F(ParserTest, Parses) {
   Context ctx;
 
   Parser p(&ctx, R"(
@@ -38,6 +38,7 @@
 
 [[location 0]] var<out> gl_FragColor : vec4<f32>;
 
+entry_point vertex = main;
 fn main() -> void {
   gl_FragColor = vec4<f32>(.4, .2, .3, 1);
 }
@@ -46,11 +47,12 @@
 
   auto m = p.module();
   ASSERT_EQ(1, m.imports().size());
-
-  // TODO(dsinclair) check rest of AST ...
+  ASSERT_EQ(1, m.entry_points().size());
+  ASSERT_EQ(1, m.functions().size());
+  ASSERT_EQ(1, m.global_variables().size());
 }
 
-TEST_F(ParserTest, DISABLED_HandlesError) {
+TEST_F(ParserTest, HandlesError) {
   Context ctx;
   Parser p(&ctx, R"(
 import "GLSL.std.430" as glsl;
@@ -61,7 +63,7 @@
 
   ASSERT_FALSE(p.Parse());
   ASSERT_TRUE(p.has_error());
-  EXPECT_EQ(p.error(), "4:15: missing return type for function");
+  EXPECT_EQ(p.error(), "4:15: unable to determine function return type");
 }
 
 }  // namespace
diff --git a/src/writer/wgsl/generator.h b/src/writer/wgsl/generator.h
index cc0cffa..827a060 100644
--- a/src/writer/wgsl/generator.h
+++ b/src/writer/wgsl/generator.h
@@ -39,6 +39,9 @@
   /// @returns the result data
   std::string result() const { return impl_.result(); }
 
+  /// @returns the error
+  std::string error() const { return impl_.error(); }
+
  private:
   GeneratorImpl impl_;
 };
diff --git a/src/writer/wgsl/generator_impl_test.cc b/src/writer/wgsl/generator_impl_test.cc
index 1b0e10a..814f214 100644
--- a/src/writer/wgsl/generator_impl_test.cc
+++ b/src/writer/wgsl/generator_impl_test.cc
@@ -23,7 +23,17 @@
 
 using GeneratorImplTest = testing::Test;
 
-TEST_F(GeneratorImplTest, DISABLED_Generate) {}
+TEST_F(GeneratorImplTest, Generate) {
+  ast::Module m;
+  m.AddImport(std::make_unique<ast::Import>("GLSL.std.430", "a"));
+
+  GeneratorImpl g;
+
+  ASSERT_TRUE(g.Generate(m)) << g.error();
+  EXPECT_EQ(g.result(), R"(import "GLSL.std.430" as a;
+
+)");
+}
 
 }  // namespace
 }  // namespace wgsl
