Пример #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))
Пример #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))
Пример #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)
Пример #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)
Пример #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)
Пример #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')
Пример #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'))
Пример #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')