Esempio n. 1
0
    def test_Date_start(self):
        "Test Date with start"
        eval = pyson.PYSONEncoder().encode(
            pyson.Date(start=pyson.Eval('date')))

        date = datetime.date(2000, 1, 1)
        self.assertEqual(pyson.PYSONDecoder({'date': date}).decode(eval), date)
Esempio n. 2
0
    def test_Date(self):
        'Test pyson.Date'
        self.assertEqual(
            pyson.Date(2010, 1, 12, -1, 12, -7).pyson(), {
                '__class__': 'Date',
                'y': 2010,
                'M': 1,
                'd': 12,
                'dy': -1,
                'dM': 12,
                'dd': -7,
                'start': None,
            })

        if not sys.flags.optimize:
            self.assertRaises(AssertionError, pyson.Date, 'test', 1, 12, -1,
                              12, -7)
            self.assertRaises(AssertionError, pyson.Date, 2010, 'test', 12, -1,
                              12, -7)
            self.assertRaises(AssertionError, pyson.Date, 2010, 1, 'test', -1,
                              12, -7)
            self.assertRaises(AssertionError, pyson.Date, 2010, 1, 12, 'test',
                              12, -7)
            self.assertRaises(AssertionError, pyson.Date, 2010, 1, 12, -1,
                              'test', -7)
            self.assertRaises(AssertionError, pyson.Date, 2010, 1, 12, -1, 12,
                              'test')

        self.assertEqual(
            pyson.Date(2010, 1, 12, -1, 12, -7).types(), set([datetime.date]))

        eval = pyson.PYSONEncoder().encode(pyson.Date())
        self.assertEqual(pyson.PYSONDecoder().decode(eval),
                         datetime.date.today())

        eval = pyson.PYSONEncoder().encode(pyson.Date(2010, 1, 12))
        self.assertEqual(pyson.PYSONDecoder().decode(eval),
                         datetime.date(2010, 1, 12))

        eval = pyson.PYSONEncoder().encode(pyson.Date(2010, 1, 12, -1))
        self.assertEqual(pyson.PYSONDecoder().decode(eval),
                         datetime.date(2009, 1, 12))

        eval = pyson.PYSONEncoder().encode(pyson.Date(2010, 1, 12, 0, 12))
        self.assertEqual(pyson.PYSONDecoder().decode(eval),
                         datetime.date(2011, 1, 12))

        eval = pyson.PYSONEncoder().encode(pyson.Date(2010, 1, 12, 0, 0, -7))
        self.assertEqual(pyson.PYSONDecoder().decode(eval),
                         datetime.date(2010, 1, 5))

        eval = pyson.PYSONEncoder().encode(datetime.date(2010, 2, 22))
        self.assertEqual(pyson.PYSONDecoder().decode(eval),
                         datetime.date(2010, 2, 22))

        self.assertEqual(repr(pyson.Date(2010, 1, 12, -1, 12, -7)),
                         'Date(2010, 1, 12, -1, 12, -7, None)')
Esempio n. 3
0
    def test_Date_start_invalid(self):
        "Test Date with invalid start"
        eval = pyson.PYSONEncoder().encode(pyson.Date(start=pyson.Eval('foo')))

        self.assertEqual(
            pyson.PYSONDecoder({
                'foo': 'bar'
            }).decode(eval), datetime.date.today())
Esempio n. 4
0
    def test_Date_start_datetime(self):
        "Test Date with start as datetime"
        eval = pyson.PYSONEncoder().encode(
            pyson.Date(start=pyson.Eval('datetime')))

        datetime_ = datetime.datetime(2000, 1, 1, 12, 00)
        self.assertEqual(
            pyson.PYSONDecoder({
                'datetime': datetime_
            }).decode(eval), datetime_.date())
Esempio n. 5
0
    def test_noeval(self):
        decoder = pyson.PYSONDecoder(noeval=True)
        encoder = pyson.PYSONEncoder()

        for instance in [
                pyson.Eval('test', 0),
                pyson.Not(True),
                pyson.Bool('test'),
                pyson.And(True, False, True),
                pyson.Or(False, True, True),
                pyson.Equal('foo', 'bar'),
                pyson.Greater(1, 0),
                pyson.Less(0, 1),
                pyson.If(True, 'foo', 'bar'),
                pyson.Get({'foo': 'bar'}, 'foo', 'default'),
                pyson.In('foo', ['foo', 'bar']),
                pyson.Date(),
                pyson.DateTime(),
                pyson.Len([1, 2, 3]),
                ]:
            self.assertEqual(decoder.decode(encoder.encode(instance)).pyson(),
                instance.pyson())
Esempio n. 6
0
    def test_Less(self):
        'Test pyson.Less'
        self.assertEqual(
            pyson.Less(0, 1).pyson(), {
                '__class__': 'Less',
                's1': 0,
                's2': 1,
                'e': False,
            })

        if not sys.flags.optimize:
            self.assertRaises(AssertionError, pyson.Less, 'test', 1)
            self.assertRaises(AssertionError, pyson.Less, 0, 'test')
            self.assertRaises(AssertionError, pyson.Less, 'test',
                              pyson.DateTime())
            self.assertRaises(AssertionError, pyson.Less, pyson.DateTime(),
                              'test')

        self.assertEqual(pyson.Less(0, 1).types(), set([bool]))

        eval = pyson.PYSONEncoder().encode(pyson.Less(0, 1))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Less(1, 0))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Less(0, 1, True))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Less(1, 0, True))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Less(1, 1))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Less(1, 1, True))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Less(None, 1))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Less(1, None))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        self.assertEqual(repr(pyson.Less(0, 1)), 'Less(0, 1, False)')

        eval = pyson.PYSONEncoder().encode(
            pyson.Less(pyson.DateTime(2020, 1, 1, 0, 0, 0, 0),
                       datetime.date(2020, 1, 1)))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Less(pyson.DateTime(2020, 1, 1, 0, 0, 0, 0),
                       datetime.date(2020, 1, 2), True))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Less(pyson.DateTime(2020, 1, 1, 0, 0, 0, 0),
                       pyson.DateTime(2020, 1, 1, 0, 0, 0, 0)))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Less(pyson.Date(2020, 1, 1), datetime.date(2020, 1, 2)))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Less(pyson.Date(2020, 1, 1),
                       pyson.DateTime(2020, 1, 1, 0, 0, 0, 1)))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Less(pyson.DateTime(2020, 1, 1, 0, 0, 0, 0),
                       pyson.Date(2020, 1, 1), True))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Less(pyson.DateTime(2020, 1, 1, 0, 0, 0, 0), 90000))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))
Esempio n. 7
0
    def test_Greater(self):
        'Test pyson.Greater'
        self.assertEqual(
            pyson.Greater(1, 0).pyson(), {
                '__class__': 'Greater',
                's1': 1,
                's2': 0,
                'e': False,
            })

        if not sys.flags.optimize:
            self.assertRaises(AssertionError, pyson.Greater, 'test', 0)
            self.assertRaises(AssertionError, pyson.Greater, 1, 'test')
            self.assertRaises(AssertionError, pyson.Greater, pyson.Eval('foo'),
                              0)
            self.assertRaises(AssertionError, pyson.Greater, 'test',
                              pyson.DateTime())
            self.assertRaises(AssertionError, pyson.Greater, pyson.DateTime(),
                              'test')

        self.assertEqual(pyson.Greater(1, 0).types(), set([bool]))

        eval = pyson.PYSONEncoder().encode(pyson.Greater(1, 0))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Greater(0, 1))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Greater(1, 0, True))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Greater(0, 1, True))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Greater(1, 1))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Greater(1, 1, True))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Greater(None, 1))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Greater(1, None))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        self.assertEqual(repr(pyson.Greater(1, 0)), 'Greater(1, 0, False)')

        eval = pyson.PYSONEncoder().encode(
            pyson.Greater(pyson.DateTime(2020, 1, 1, 0, 0, 0, 0),
                          datetime.date(2020, 1, 2)))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Greater(pyson.DateTime(2020, 1, 1, 0, 0, 0, 1),
                          datetime.date(2020, 1, 1)))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Greater(pyson.DateTime(2020, 1, 1, 0, 0, 0, 0),
                          datetime.date(2020, 1, 1), True))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Greater(pyson.DateTime(2020, 1, 1, 0, 0, 0, 0),
                          pyson.DateTime(2020, 1, 1, 0, 0, 0, 0)))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Greater(pyson.Date(2020, 1, 1), datetime.date(2020, 1, 1)))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Greater(pyson.Date(2020, 1, 1),
                          pyson.DateTime(2020, 1, 1, 0, 0, 0, 1)))
        self.assertFalse(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Greater(pyson.DateTime(2020, 1, 1, 0, 0, 1),
                          pyson.Date(2020, 1, 1), True))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Greater(pyson.DateTime(2020, 1, 1, 0, 0, 0, 0),
                          pyson.Date(2020, 1, 1), True))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(
            pyson.Greater(pyson.DateTime(2020, 1, 1, 0, 0, 0, 0), 90000))
        self.assertTrue(pyson.PYSONDecoder().decode(eval))

        eval = pyson.PYSONEncoder().encode(pyson.Greater(
            pyson.Eval('i', 0), 0))
        self.assertTrue(pyson.PYSONDecoder({'i': 1}).decode(eval))