예제 #1
0
        public void ReuseClosureSlotTest()
        {
            string expected = "a\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\closure\reuse_closure_slot.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #2
0
        public void InheritMethodsTest()
        {
            string expected = "foo\r\nbar\r\nbar\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\inheritance\inherit_methods.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #3
0
        public void SetFieldsFromBaseClassTest()
        {
            string expected = "foo 1\r\nfoo 2\r\nbar 1\r\nbar 2\r\nbar 1\r\nbar 2\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\inheritance\set_fields_from_base_class.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #4
0
        public void TruthTest()
        {
            string expected = "false\r\nnil\r\nTrue\r\n0\r\nempty\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\if\truth.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #5
0
        public void VarInThenTest()
        {
            string expected = "[line 2] Error at 'var': Expect expression.\r\n";

            string actual = CsLoxTests.RunScriptForError(@"C:\CsLox\CsLoxTests\TestScripts\if\var_in_then.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #6
0
        public void ArityTest()
        {
            string expected = "no args\r\n1\r\n3\r\n6\r\n10\r\n15\r\n21\r\n28\r\n36\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\method\arity.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #7
0
        public void DanglingElseTest()
        {
            string expected = "good\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\if\dangling_else.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #8
0
        public void UndefinedTest()
        {
            string expected = "Undefined variable 'unknown'.\r\n[line 1]\r\n";

            string actual = CsLoxTests.RunScriptForError(@"C:\CsLox\CsLoxTests\TestScripts\assignment\undefined.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #9
0
        public void AssociativityTest()
        {
            string expected = "c\r\nc\r\nc\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\assignment\associativity.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #10
0
        public void PrefixOperatorTest()
        {
            string expected = "[line 2] Error at '=': Invalid assignment target.\r\n";

            string actual = CsLoxTests.RunScriptForError(@"C:\CsLox\CsLoxTests\TestScripts\assignment\prefix_operator.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #11
0
        public void SyntaxTest()
        {
            string expected = "var\r\nvar\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\assignment\syntax.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #12
0
        public void LocalTest()
        {
            string expected = "before\r\nafter\r\narg\r\narg\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\assignment\local.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #13
0
        public void LiteralTest()
        {
            string expected = "nil\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\nil\literal.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #14
0
        public void NotTest()
        {
            string expected = "False\r\nTrue\r\nTrue\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\bool\not.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #15
0
        public void PrintBoundMethodTest()
        {
            string expected = "<fn method>\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\method\print_bound_method.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #16
0
        public void OnlyLineCommentAndLineTest()
        {
            string expected = "";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\comments\only_line_comment_and_line.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #17
0
        public void ReferToNameTest()
        {
            string expected = "Undefined variable 'method'.\r\n[line 3]\r\n";

            string actual = CsLoxTests.RunScriptForError(@"C:\CsLox\CsLoxTests\TestScripts\method\refer_to_name.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #18
0
        public void MalformedMultilineCommentTest()
        {
            string expected = "";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\comments\malformed_multiline_comment.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #19
0
        public void TooManyParametersTest()
        {
            string expected = "[line 258] Error at 'a': Cannot have more than 255 parameters.\r\n";

            string actual = CsLoxTests.RunScriptForError(@"C:\CsLox\CsLoxTests\TestScripts\method\too_many_parameters.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #20
0
        public void MalformedMultilineCommentErrorTest()
        {
            string expected = "[line 5] Error: Unterminated comment.\r\n";

            string actual = CsLoxTests.RunScriptForError(@"C:\CsLox\CsLoxTests\TestScripts\comments\malformed_multiline_comment.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #21
0
        public void IfTest()
        {
            string expected = "good\r\nblock\r\nTrue\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\if\if.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #22
0
        public void LineAtEofTest()
        {
            string expected = "ok\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\comments\line_at_eof.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #23
0
        public void ClassInElseTest()
        {
            string expected = "[line 2] Error at 'class': Expect expression.\r\n";

            string actual = CsLoxTests.RunScriptForError(@"C:\CsLox\CsLoxTests\TestScripts\if\class_in_else.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #24
0
        public void EmptyBlockTest()
        {
            string expected = "nil\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\method\empty_block.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #25
0
        public void InheritFromNumberTest()
        {
            string expected = "Superclass must be a class.\r\n[line 2]\r\n";

            string actual = CsLoxTests.RunScriptForError(@"C:\CsLox\CsLoxTests\TestScripts\inheritance\inherit_from_number.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #26
0
        public void MissingArgumentsTest()
        {
            string expected = "Expected 2 arguments but got 1.\r\n[line 5]\r\n";

            string actual = CsLoxTests.RunScriptForError(@"C:\CsLox\CsLoxTests\TestScripts\method\missing_arguments.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #27
0
        public void ParenthesizedSuperclassTest()
        {
            string expected = "[line 4] Error at '(': Expect superclass name.\r\n";

            string actual = CsLoxTests.RunScriptForError(@"C:\CsLox\CsLoxTests\TestScripts\inheritance\parenthesized_superclass.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #28
0
        public void NotFoundTest()
        {
            string expected = "Undefined property 'unknown'.\r\n[line 3]\r\n";

            string actual = CsLoxTests.RunScriptForError(@"C:\CsLox\CsLoxTests\TestScripts\method\not_found.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #29
0
        public void ConstructorTest()
        {
            string expected = "value\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\inheritance\constructor.lox");

            Assert.AreEqual(expected, actual);
        }
예제 #30
0
        public void ReferenceClosureMultipleTimesTest()
        {
            string expected = "a\r\na\r\n";

            string actual = CsLoxTests.RunScript(@"C:\CsLox\CsLoxTests\TestScripts\closure\reference_closure_multiple_times.lox");

            Assert.AreEqual(expected, actual);
        }