diff --git a/internal/ceres/conditional_expressions_test.cc b/internal/ceres/conditional_expressions_test.cc
index d7b3979..5b0d8e4 100644
--- a/internal/ceres/conditional_expressions_test.cc
+++ b/internal/ceres/conditional_expressions_test.cc
@@ -31,7 +31,10 @@
 
 #define CERES_CODEGEN
 
-#include "expression_test.h"
+#include "ceres/internal/expression_graph.h"
+#include "ceres/internal/expression_ref.h"
+
+#include "gtest/gtest.h"
 
 namespace ceres {
 namespace internal {
@@ -53,10 +56,12 @@
   // Expected code
   //   v_0 = 2;
 
+  ExpressionGraph reference;
   // clang-format off
   // Id  Type                   Lhs  Value Name  Arguments
-  CHECK_EXPRESSION(0,  COMPILE_TIME_CONSTANT, 0,   2,     "",);
+  reference.InsertExpression(0,  ExpressionType::COMPILE_TIME_CONSTANT, 0,   {}, "", 2);
   // clang-format on
+  EXPECT_EQ(reference, graph);
 
   // Variables after execution:
   //
@@ -84,12 +89,14 @@
   //   v_1 = 4;
   //   v_1 = v_0;
 
+  ExpressionGraph reference;
   // clang-format off
   // Id, Type, Lhs, Value, Name, Arguments
-  CHECK_EXPRESSION(  0,  COMPILE_TIME_CONSTANT,   0,   2,   "",   );
-  CHECK_EXPRESSION(  1,  COMPILE_TIME_CONSTANT,   1,   4,   "",   );
-  CHECK_EXPRESSION(  2,             ASSIGNMENT,   1,   0,   "",  0);
+  reference.InsertExpression(  0,  ExpressionType::COMPILE_TIME_CONSTANT,   0,    {}  , "",  2);
+  reference.InsertExpression(  1,  ExpressionType::COMPILE_TIME_CONSTANT,   1,     {} , "",  4);
+  reference.InsertExpression(  2,             ExpressionType::ASSIGNMENT,   1,     {0}, "",  0);
   // clang-format on
+  EXPECT_EQ(reference, graph);
 
   // Variables after execution:
   //
@@ -121,15 +128,17 @@
 
   EXPECT_EQ(graph.Size(), 6);
 
+  ExpressionGraph reference;
   // clang-format off
   // Id, Type, Lhs, Value, Name, Arguments...
-  CHECK_EXPRESSION(  0, COMPILE_TIME_CONSTANT,   0,   2,   "",      );
-  CHECK_EXPRESSION(  1, COMPILE_TIME_CONSTANT,   1,   3,   "",      );
-  CHECK_EXPRESSION(  2,     BINARY_COMPARISON,   2,   0,  "<",  0, 1);
-  CHECK_EXPRESSION(  3,                    IF,  -1,   0,   "",     2);
-  CHECK_EXPRESSION(  4,                  ELSE,  -1,   0,   "",      );
-  CHECK_EXPRESSION(  5,                 ENDIF,  -1,   0,   "",      );
+  reference.InsertExpression(  0, ExpressionType::COMPILE_TIME_CONSTANT,   0,  {}     ,    "", 2);
+  reference.InsertExpression(  1, ExpressionType::COMPILE_TIME_CONSTANT,   1,  {}     ,    "", 3);
+  reference.InsertExpression(  2,     ExpressionType::BINARY_COMPARISON,   2,  {0, 1} ,   "<", 0);
+  reference.InsertExpression(  3,                    ExpressionType::IF,  -1,  {2}    ,    "", 0);
+  reference.InsertExpression(  4,                  ExpressionType::ELSE,  -1,  {}     ,    "", 0);
+  reference.InsertExpression(  5,                 ExpressionType::ENDIF,  -1,  {}     ,    "", 0);
   // clang-format on
+  EXPECT_EQ(reference, graph);
 }
 
 TEST(Expression, ConditionalAssignment) {
@@ -160,20 +169,22 @@
   //   v_9 = v_4 + v_0;
   //   v_4 = v_9;
 
+  ExpressionGraph reference;
   // clang-format off
   // Id,   Type,                  Lhs, Value, Name, Arguments...
-  CHECK_EXPRESSION(  0,  COMPILE_TIME_CONSTANT,    0,    2,   "",      );
-  CHECK_EXPRESSION(  1,  COMPILE_TIME_CONSTANT,    1,    3,   "",      );
-  CHECK_EXPRESSION(  2,      BINARY_COMPARISON,    2,    0,  "<",  0, 1);
-  CHECK_EXPRESSION(  3,                     IF,   -1,    0,   "",     2);
-  CHECK_EXPRESSION(  4,      BINARY_ARITHMETIC,    4,    0,  "+",  0, 1);
-  CHECK_EXPRESSION(  5,                   ELSE,   -1,    0,   "",      );
-  CHECK_EXPRESSION(  6,      BINARY_ARITHMETIC,    6,    0,  "-",  0, 1);
-  CHECK_EXPRESSION(  7,             ASSIGNMENT,    4,    0,   "",  6   );
-  CHECK_EXPRESSION(  8,                  ENDIF,   -1,    0,   "",      );
-  CHECK_EXPRESSION(  9,      BINARY_ARITHMETIC,    9,    0,  "+",  4, 0);
-  CHECK_EXPRESSION( 10,             ASSIGNMENT,    4,    0,   "",  9   );
+  reference.InsertExpression(  0,  ExpressionType::COMPILE_TIME_CONSTANT,    0,   {}    ,   "",   2);
+  reference.InsertExpression(  1,  ExpressionType::COMPILE_TIME_CONSTANT,    1,   {}    ,   "",   3);
+  reference.InsertExpression(  2,      ExpressionType::BINARY_COMPARISON,    2,   {0, 1},  "<",   0);
+  reference.InsertExpression(  3,                     ExpressionType::IF,   -1,   {2}   ,   "",   0);
+  reference.InsertExpression(  4,      ExpressionType::BINARY_ARITHMETIC,    4,   {0, 1},  "+",   0);
+  reference.InsertExpression(  5,                   ExpressionType::ELSE,   -1,   {}    ,   "",   0);
+  reference.InsertExpression(  6,      ExpressionType::BINARY_ARITHMETIC,    6,   {0, 1},  "-",   0);
+  reference.InsertExpression(  7,             ExpressionType::ASSIGNMENT,    4,   {6}   ,   "",   0);
+  reference.InsertExpression(  8,                  ExpressionType::ENDIF,   -1,   {}    ,   "",   0);
+  reference.InsertExpression(  9,      ExpressionType::BINARY_ARITHMETIC,    9,   {4, 0},  "+",   0);
+  reference.InsertExpression( 10,             ExpressionType::ASSIGNMENT,    4,   {9}   ,   "",   0);
   // clang-format on
+  EXPECT_EQ(reference, graph);
 
   // Variables after execution:
   //
diff --git a/internal/ceres/expression_test.cc b/internal/ceres/expression_test.cc
index c21ae31..7dd5a61 100644
--- a/internal/ceres/expression_test.cc
+++ b/internal/ceres/expression_test.cc
@@ -31,8 +31,10 @@
 
 #define CERES_CODEGEN
 
-#include "ceres/expression_test.h"
+#include "ceres/internal/expression_graph.h"
+#include "ceres/internal/expression_ref.h"
 #include "ceres/jet.h"
+#include "gtest/gtest.h"
 
 namespace ceres {
 namespace internal {
diff --git a/internal/ceres/expression_test.h b/internal/ceres/expression_test.h
deleted file mode 100644
index 2be7f8e..0000000
--- a/internal/ceres/expression_test.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2019 Google Inc. All rights reserved.
-// http://code.google.com/p/ceres-solver/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-//   this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-//   this list of conditions and the following disclaimer in the documentation
-//   and/or other materials provided with the distribution.
-// * Neither the name of Google Inc. nor the names of its contributors may be
-//   used to endorse or promote products derived from this software without
-//   specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Author: darius.rueckert@fau.de (Darius Rueckert)
-//
-
-#ifndef CERES_PUBLIC_EXPRESSION_TEST_H_
-#define CERES_PUBLIC_EXPRESSION_TEST_H_
-
-#include "ceres/internal/expression_graph.h"
-#include "ceres/internal/expression_ref.h"
-
-#include "gtest/gtest.h"
-
-// This file adds a few helper functions to test Expressions and
-// ExpressionGraphs for correctness.
-namespace ceres {
-namespace internal {
-
-inline void TestExpression(const Expression& expr,
-                           ExpressionType type,
-                           ExpressionId lhs_id,
-                           double value,
-                           const std::string& name,
-                           const std::vector<ExpressionId>& arguments) {
-  EXPECT_EQ(static_cast<int>(expr.type()), static_cast<int>(type));
-  EXPECT_EQ(expr.lhs_id(), lhs_id);
-  EXPECT_EQ(expr.value(), value);
-  EXPECT_EQ(expr.name(), name);
-  EXPECT_EQ(expr.arguments(), arguments);
-}
-
-#define CHECK_EXPRESSION(_id, _type, _lhs_id, _value, _name, ...) \
-  TestExpression(graph.ExpressionForId(_id),                      \
-                 ExpressionType::_type,                           \
-                 _lhs_id,                                         \
-                 _value,                                          \
-                 _name,                                           \
-                 {__VA_ARGS__})
-
-}  // namespace internal
-}  // namespace ceres
-
-#endif
