diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp
index 0b3c290ffac9d9f6a8e08c0afc28d98357e24b13..11cfd48191e3e29271ab76058ae1f8c573d6365b 100644
--- a/tests/test_ASTNodeDataTypeBuilder.cpp
+++ b/tests/test_ASTNodeDataTypeBuilder.cpp
@@ -940,4 +940,83 @@ not 1;
       CHECK_AST(data, result);
     }
   }
+
+  SECTION("binary operators")
+  {
+    SECTION("plus")
+    {
+      std::string_view data = R"(
+1+2;
+)";
+
+      std::string_view result = R"(
+(root:void)
+ `-(language::plus_op:Z)
+     +-(language::integer:1:Z)
+     `-(language::integer:2:Z)
+)";
+
+      CHECK_AST(data, result);
+    }
+
+    SECTION("minus")
+    {
+      std::string_view data = R"(
+1-2;
+)";
+
+      std::string_view result = R"(
+(root:void)
+ `-(language::minus_op:Z)
+     +-(language::integer:1:Z)
+     `-(language::integer:2:Z)
+)";
+
+      CHECK_AST(data, result);
+    }
+
+    SECTION("multiply")
+    {
+      std::string_view data = R"(
+1*2;
+)";
+
+      std::string_view result = R"(
+(root:void)
+ `-(language::multiply_op:Z)
+     +-(language::integer:1:Z)
+     `-(language::integer:2:Z)
+)";
+
+      CHECK_AST(data, result);
+    }
+
+    SECTION("divide")
+    {
+      std::string_view data = R"(
+1/2;
+)";
+
+      std::string_view result = R"(
+(root:void)
+ `-(language::divide_op:Z)
+     +-(language::integer:1:Z)
+     `-(language::integer:2:Z)
+)";
+
+      CHECK_AST(data, result);
+    }
+
+    SECTION("invalid operands")
+    {
+      std::string_view data = R"(
+1+"string";
+)";
+
+      string_input input{data, "test.pgs"};
+      auto ast = ASTBuilder::build(input);
+      ASTSymbolTableBuilder{*ast};
+      REQUIRE_THROWS_AS(ASTNodeDataTypeBuilder{*ast}, parse_error);
+    }
+  }
 }