Пример #1
0
 def test_digest(self):
     self.assertEqual(self._get_digest(1), self._get_digest(1))
     self.assertEqual(
         self._get_digest(1, locn=SourceLocation('path', line=2, column=3)),
         self._get_digest(1, locn=SourceLocation('path', line=2, column=3)))
     self.assertNotEqual(self._get_digest(1), self._get_digest(2))
     self.assertNotEqual(
         self._get_digest(1, locn=SourceLocation('path', line=2, column=3)),
         self._get_digest(1,
                          locn=SourceLocation('path', line=200, column=3)))
Пример #2
0
 def _make_body(self, srcfile, first):
     return [
         Number(1.0, locn=SourceLocation(srcfile, line=first + 1,
                                         column=1)),
         Number(2.0, locn=SourceLocation(srcfile, line=first + 1,
                                         column=9)),
         Number(3.0, locn=SourceLocation(srcfile, line=first + 2,
                                         column=3)),
         Number(4.0, locn=SourceLocation(srcfile, line=first + 3,
                                         column=1)),
     ]
Пример #3
0
    def test_equal(self):
        self.assertEqual(Number(13), Number(13))
        self.assertEqual(
            Number(17, locn=SourceLocation('path', line=2, column=3)),
            Number(17, locn=SourceLocation('path', line=2, column=3)))

        # Differ by value
        self.assertNotEqual(Number(13), Number(27))

        # Differ only by source location
        self.assertNotEqual(
            Number(23, locn=SourceLocation('path', line=2, column=3)),
            Number(23, locn=SourceLocation('path', line=2, column=432)))
Пример #4
0
    def test_equal(self):
        self.assertEqual(String('string'), String('string'))
        self.assertEqual(
            String('string', locn=SourceLocation('path', line=2, column=3)),
            String('string', locn=SourceLocation('path', line=2, column=3)))
        # Differ by value
        self.assertNotEqual(String('op1'), String('op2'))
        self.assertNotEqual(String('string'), String('String'))

        # Differ only by source location
        self.assertNotEqual(
            String('op', locn=SourceLocation('path', line=2, column=3)),
            String('op', locn=SourceLocation('path', line=2, column=432)))
Пример #5
0
    def test_empty_procedure(self):
        filename = 'filename'
        first = 47
        locn = SourceLocation(srcfile=filename, line=first, column=7)
        proc = Procedure([], locn=locn)

        result = rebase.rebase_source_info(proc)

        expected_proc = Procedure([],
                                  locn=SourceLocation(srcfile=filename,
                                                      line=0,
                                                      column=7))
        self.assertEqual(result.procedure, expected_proc)
        self.assertEqual(result.line_base, first)
Пример #6
0
    def test_equal(self):
        self.assertEqual(Operator('operator'), Operator('operator'))
        self.assertEqual(
            Operator('operator', locn=SourceLocation('path', line=2,
                                                     column=3)),
            Operator('operator', locn=SourceLocation('path', line=2,
                                                     column=3)))
        # Differ by value
        self.assertNotEqual(Operator('op1'), Operator('op2'))

        # Differ only by source location
        self.assertNotEqual(
            Operator('op', locn=SourceLocation('path', line=2, column=3)),
            Operator('op', locn=SourceLocation('path', line=2, column=432)))
Пример #7
0
    def test_procedure_with_contents(self):
        filename = 'filename'
        first = 16
        proc = Procedure(self._make_body(srcfile=filename, first=first),
                         locn=SourceLocation(srcfile=filename,
                                             line=first,
                                             column=1))

        result = rebase.rebase_source_info(proc)

        expected_proc = Procedure(self._make_body(srcfile=filename, first=0),
                                  locn=SourceLocation(srcfile=filename,
                                                      line=0,
                                                      column=1))
        self.assertEqual(result.procedure, expected_proc)
        self.assertEqual(result.line_base, first)
Пример #8
0
    def test_digest(self):
        self.assertEqual(self._get_digest('a'), self._get_digest('a'))
        self.assertEqual(
            self._get_digest('a',
                             locn=SourceLocation('path', line=2, column=3)),
            self._get_digest('a',
                             locn=SourceLocation('path', line=2, column=3)))

        # Differ by value
        self.assertNotEqual(self._get_digest('a'), self._get_digest('b'))

        # Differs only by source location
        self.assertNotEqual(
            self._get_digest('a',
                             locn=SourceLocation('path', line=2, column=3)),
            self._get_digest('a',
                             locn=SourceLocation('path', line=200, column=3)))
Пример #9
0
    def test_equal(self):
        self.assertEqual(Procedure([]), Procedure([]))
        self.assertEqual(Procedure([Boolean(True)]),
                         Procedure([Boolean(True)]))
        self.assertNotEqual(Procedure([Boolean(True)]),
                            Procedure([Boolean(False)]))
        self.assertNotEqual(Procedure([]), Procedure([Boolean(False)]))

        self.assertNotEqual(
            Procedure([]),
            Procedure([], locn=SourceLocation('path', line=1, column=1)))
Пример #10
0
    def test_digest(self):
        self.assertEqual(self._get_digest([]), self._get_digest([]))
        self.assertEqual(
            self._get_digest([], locn=SourceLocation('path', line=2,
                                                     column=3)),
            self._get_digest([], locn=SourceLocation('path', line=2,
                                                     column=3)))
        self.assertNotEqual(
            self._get_digest([]),
            self._get_digest([], locn=SourceLocation('path', line=2,
                                                     column=3)))
        self.assertNotEqual(
            self._get_digest([], locn=SourceLocation('path', line=2,
                                                     column=3)),
            self._get_digest([],
                             locn=SourceLocation('path', line=200, column=3)))

        self.assertNotEqual(self._get_digest([]),
                            self._get_digest([Boolean(False)]))
        self.assertNotEqual(self._get_digest([Boolean(True)]),
                            self._get_digest([Boolean(False)]))
Пример #11
0
    def test_procedure_round_trip(self) -> None:
        Procedure([
            Number(value=42.0,
                   locn=SourceLocation(srcfile="foo.toy", line=23, column=29)),
            Number(value=68.0,
                   locn=SourceLocation(srcfile="foo.toy", line=24, column=31))
        ],
                  locn=SourceLocation(srcfile="foo.toy", line=22,
                                      column=1)).write(self.__sections)
        self.__reset()

        n2 = Instruction.read(self.__sections)
        self.assertIsInstance(n2, Procedure)

        expected = [Number(value=42.0), Number(value=68.0)]
        instructions = n2.instructions()
        self.assertSequenceEqual(expected, instructions)

        n2.read_debug(binary=self.__sections[SectionType.debug_line],
                      line_base=0)
        self.assertEqual(SourceLocation(srcfile="foo.toy", line=23, column=29),
                         instructions[0].locn())
        self.assertEqual(SourceLocation(srcfile="foo.toy", line=24, column=31),
                         instructions[1].locn())
Пример #12
0
    def test_number_round_trip(self) -> None:
        Number(value=42.0,
               locn=SourceLocation(srcfile="foo.toy", line=23,
                                   column=29)).write(self.__sections)
        self.__reset()

        n2 = Instruction.read(self.__sections)
        self.assertIsInstance(n2, Number)
        self.assertEqual(42.0, n2.value())
        self.assertIsNone(n2.locn())  # No debug line information yet.

        n2.read_debug(binary=self.__sections[SectionType.debug_line],
                      line_base=0)
        l = n2.locn()
        self.assertEqual("foo.toy", l.srcfile)
        self.assertEqual(23, l.line)
        self.assertEqual(29, l.column)