Esempio n. 1
0
 def assert_pass(self, check, str1, str2, expect=True):
     if expect:
         message = 'expecting %r to equal %r'
     else:
         message = 'expecting %r to not equal %r'
     if bool(check(str1, str2)) != expect:
         self.fail(message % (str1, str2))
     if bool(check(str2, str1)) != expect:
         self.fail(message % (str2, str1))
Esempio n. 2
0
 def assert_pass(self, check, str1, str2, expect=True):
     if expect:
         message = 'expecting %r to equal %r'
     else:
         message = 'expecting %r to not equal %r'
     self.assertEqual(bool(check(str1, str2)), expect,
                      message % (str1, str2))
     self.assertEqual(bool(check(str2, str1)), expect,
                      message % (str2, str1))
Esempio n. 3
0
    def test_identical(self):
        from dmoj.checkers.identical import check

        self.assertTrue(check(b'a\nb\nc', b'a\nb\nc'))
        self.assertTrue(check(b'a\nb\nc\n', b'a\nb\nc\n'))
        self.assert_identical_pe(check(b'a \nb\nc', b'a\nb\nc'))
        self.assert_identical_pe(check(b'a\nb\nc', b'a\nb\nc\n'))
        self.assert_wa_feedback(check(b'a\nb\nc',
                                      b'a\nb\nc\n',
                                      pe_allowed=False),
                                feedback=None)
Esempio n. 4
0
    def test_identical(self):
        from dmoj.checkers.identical import check

        def is_pe(res, feedback='Presentation Error, check your whitespace'):
            return res is not True and not res.passed and res.feedback == feedback

        assert check(b'a\nb\nc', b'a\nb\nc')
        assert check(b'a\nb\nc', b'a\nb\nc')
        assert is_pe(check(b'a \nb\nc', b'a\nb\nc'))
        assert is_pe(check(b'a\nb\nc', b'a\nb\nc\n'))
        assert is_pe(check(b'a\nb\nc', b'a\nb\nc\n', pe_allowed=False), feedback=None)
Esempio n. 5
0
    def test_linematches(self):
        from dmoj.checkers.linematches import check

        self.assertFalse(check(b'1', b'1\n2', point_distribution=[1, 1]))
        self.assertFalse(check(b'1\n2', b'1'))

        self.assert_partial(
            check(b'1',
                  b'1\n2',
                  filler_lines_required=False,
                  point_distribution=[4, 6]),
            expected_points=0.4,
            passed=True,
        )
        self.assert_partial(check(b'1\n3', b'1\n2', point_distribution=[4, 6]),
                            expected_points=0.4,
                            passed=True)

        self.assert_partial(check(b'3\n2', b'1\n2', point_distribution=[4, 6]),
                            expected_points=0.6,
                            passed=True)
        self.assert_partial(check(b'1\n2', b'1\n2', point_distribution=[4, 6]),
                            expected_points=1,
                            passed=True)

        self.assert_partial(check(b'1', b'2', point_distribution=[1]),
                            expected_points=0,
                            passed=False)
Esempio n. 6
0
    def test_sorted(self):
        from dmoj.checkers.sorted import check

        assert not check(b'1 2 3', b'3 2 1')
        assert check(b'1 2 3', b'3 2 1', split_on='whitespace')
        assert not check(b'1 2 3', b'3 2 1', split_on='lines')
        assert check(b'1 2 3', b'1 2 3')
        assert not check(b'1 2 2', b'1 2 3')
        assert not check(b'1 2', b'1')
        assert not check(b'1\n2', b'1')
        assert not check(b'12', b'1 2')

        assert check(b'1 2\n3', b'3\n1 2')
        assert not check(b'1 2\n3', b'3\n2 1')
        assert check(b'1 2\n3', b'3\n2 1', split_on='whitespace')
Esempio n. 7
0
    def test_sorted(self):
        from dmoj.checkers.sorted import check

        self.assertFalse(check(b'1 2 3', b'3 2 1'))
        self.assertTrue(check(b'1 2 3', b'3 2 1', split_on='whitespace'))
        self.assertFalse(check(b'1 2 3', b'3 2 1', split_on='lines'))
        self.assertTrue(check(b'1 2 3', b'1 2 3'))
        self.assertFalse(check(b'1 2 2', b'1 2 3'))
        self.assertFalse(check(b'1 2', b'1'))
        self.assertFalse(check(b'1\n2', b'1'))
        self.assertFalse(check(b'12', b'1 2'))

        self.assertTrue(check(b'1 2\n3', b'3\n1 2'))
        self.assertFalse(check(b'1 2\n3', b'3\n2 1'))
        self.assertTrue(check(b'1 2\n3', b'3\n2 1', split_on='whitespace'))
Esempio n. 8
0
    def test_standard(self):
        from dmoj.checkers.standard import check

        assert check(b'a', b'a')
        assert check(b'a b', b'a  b')
        assert check(b'a b   \n', b'a b')
        assert check(b'\n\na b \n    ', b'a b')
        assert check(b'a\n\n\nb', b'a\nb')
        assert check(b'  a   \n\n', b'\n\n\n  a   \n')
        assert check(b'a ' * 1000, b' a' * 1000)
        assert check(b'a\n' * 1000, b'\n\n\na' * 1000)

        assert not check(b'a', b'b')
        assert not check(b'\n\n\na \n b\n', b'a b')
        assert not check(b'a\n\n\nb', b'a b')

        # Checkers should handle mixed bytes/str
        assert check(b'a', u'a')
        assert not check(b'a', u'b')