コード例 #1
0
    def test_conversion(self):
        self.assertTrue(fv(123).is_number())
        self.assertFalse(fv(123).is_string())
        self.assertFalse(fv(123).is_list())
        self.assertFalse(fv(123).is_infinite())
        self.assertFalse(fv(123).is_nan())

        self.assertTrue(fv('Infinity').is_number())
        self.assertFalse(fv('Infinity').is_string())
        self.assertFalse(fv('Infinity').is_list())
        self.assertTrue(fv('Infinity').is_infinite())
        self.assertFalse(fv('Infinity').is_nan())

        self.assertTrue(fv('-Infinity').is_number())
        self.assertFalse(fv('-Infinity').is_string())
        self.assertFalse(fv('-Infinity').is_list())
        self.assertTrue(fv('-Infinity').is_infinite())
        self.assertFalse(fv('-Infinity').is_nan())

        self.assertFalse(fv('infinity').is_number())
        self.assertTrue(fv('infinity').is_string())
        self.assertFalse(fv('infinity').is_list())
        self.assertFalse(fv('infinity').is_infinite())
        self.assertFalse(fv('infinity').is_nan())

        self.assertFalse(fv('-infinity').is_number())
        self.assertTrue(fv('-infinity').is_string())
        self.assertFalse(fv('-infinity').is_list())
        self.assertFalse(fv('-infinity').is_infinite())
        self.assertFalse(fv('-infinity').is_nan())

        self.assertFalse(fv('inf').is_number())
        self.assertTrue(fv('inf').is_string())
        self.assertFalse(fv('inf').is_list())
        self.assertFalse(fv('inf').is_infinite())
        self.assertFalse(fv('inf').is_nan())

        self.assertFalse(fv('-inf').is_number())
        self.assertTrue(fv('-inf').is_string())
        self.assertFalse(fv('-inf').is_list())
        self.assertFalse(fv('-inf').is_infinite())
        self.assertFalse(fv('-inf').is_nan())

        self.assertTrue(fv('NaN').is_number())
        self.assertFalse(fv('NaN').is_string())
        self.assertFalse(fv('NaN').is_list())
        self.assertFalse(fv('NaN').is_infinite())
        self.assertTrue(fv('NaN').is_nan())

        self.assertFalse(fv('nan').is_number())
        self.assertTrue(fv('nan').is_string())
        self.assertFalse(fv('nan').is_list())
        self.assertFalse(fv('nan').is_infinite())
        self.assertFalse(fv('nan').is_nan())

        self.assertFalse(fv('test string').is_number())
        self.assertTrue(fv('test string').is_string())
        self.assertFalse(fv('test string').is_list())
        self.assertFalse(fv('test string').is_infinite())
        self.assertFalse(fv('test string').is_nan())

        self.assertFalse(fv([1, 2]).is_number())
        self.assertFalse(fv([1, 2]).is_string())
        self.assertTrue(fv([1, 2]).is_list())
        self.assertFalse(fv([1, 2]).is_infinite())
        self.assertFalse(fv([1, 2]).is_nan())

        self.assertEqual(len(fv(123456)), 6)
        self.assertEqual(len(fv('hello!')), 6)
        self.assertEqual(len(fv('')), 0)
        self.assertEqual(len(fv([1, 2])), 2)
        self.assertEqual(len(fv([])), 0)

        self.assertTrue(fv('2') in fv('123'))
        self.assertFalse(fv('4') in fv('123'))
        self.assertTrue(fv(2) in fv(123))
        self.assertFalse(fv(4) in fv(123))
        self.assertTrue(fv(2) in fv([1, 2, 3]))
        self.assertFalse(fv(4) in fv([1, 2, 3]))
コード例 #2
0
 def test_initialising_values(self):
     a = fv(1)
     a = fv(-5)
     a = fv(1.2)
     a = fv(-9999.4523)
     a = fv('Infinity')
     a = fv('-Infinity')
     a = fv('infinity')
     a = fv('NaN')
     a = fv('nan')
     a = fv('A string!')
     a = fv('')
     a = fv([])
     a = fv([1, 2, 3])
     a = fv(['hey', 2.3, -1])
     with self.assertRaises(TypeError):
         a = fv({'a': 3, 'b': 5})
     with self.assertRaises(TypeError):
         a = fv(set(1, 2, 3))
コード例 #3
0
    def test_string_and_index(self):
        self.assertEqual(fv('abc').join(fv('def')), fv('abcdef'))
        self.assertEqual(fv('abc').join(fv(123)), fv('abc123'))
        self.assertEqual(fv(123).join(fv(456)), fv(123456))

        self.assertEqual(fv('abc')[1], fv('b'))
        self.assertEqual(fv('abc')[-1], fv(''))
        self.assertEqual(fv(123)[1], fv(2))
        self.assertEqual(fv(123)[-1], fv(''))
        self.assertEqual(fv([1, 2, 3])[1], fv(2))
        self.assertEqual(fv([1, 2, 3])[-1], fv(''))

        a = fv([1, 2, 3])
        a.add(4)
        self.assertEqual(a, fv([1, 2, 3, 4]))

        self.assertEqual(fv([]).add(1).add(2).add(3).add(4), fv([1, 2, 3, 4]))

        a = fv([1, 2, 3])
        a[1] = 'b'
        self.assertEqual(a, fv([1, 'b', 3]))

        a = fv([1, 2, 3])
        a[3] = 'b'

        a = fv([1, 2, 3])
        del a[1]
        self.assertEqual(a, fv([1, 3]))

        a = fv([1, 3])
        a.insert(1, 2)
        self.assertEqual(a, fv([1, 2, 3]))

        self.assertEqual(
            fv([1, 4]).insert(1, 2).insert(2, 3), fv([1, 2, 3, 4]))

        self.assertEqual(fv([1, 2, 3]).item_number(2), 1)

        self.assertEqual(fv([1, 2, 3]).item_number(4), 0)
コード例 #4
0
    def test_comparison(self):
        self.assertTrue(fv(3) > fv(2))
        self.assertFalse(fv(3) > fv(5))
        self.assertTrue(fv(3) > fv('2'))
        self.assertTrue(fv('bb') > fv('aaa'))
        self.assertTrue(fv('bbb') > fv('bb'))
        self.assertTrue(fv('Infinity') > fv(3))
        self.assertTrue(fv(3) > fv('-Infinity'))

        self.assertFalse(fv(3) < fv(2))
        self.assertTrue(fv(3) < fv(5))
        self.assertFalse(fv(3) < fv('2'))
        self.assertFalse(fv('bb') < fv('aaa'))
        self.assertFalse(fv('bbb') < fv('bb'))
        self.assertFalse(fv('Infinity') < fv(3))
        self.assertFalse(fv(3) < fv('-Infinity'))

        self.assertTrue(fv(5) == 5)
        self.assertTrue(fv(5) == fv(5))
        self.assertFalse(fv(5) == fv('3'))
        self.assertTrue(fv([1, '2', 3]) == fv(['1', 2, '3']))
        self.assertFalse(fv([1, '2']) == fv(['1', 2, '3']))
        self.assertTrue(fv('Infinity') == fv('Infinity'))
        self.assertFalse(fv('Infinity') == fv('-Infinity'))
        self.assertTrue(fv('NaN') == fv('NaN'))
コード例 #5
0
    def test_rounding(self):
        self.assertEqual(round(fv(1.5)), fv(2))
        self.assertEqual(round(fv(-1.5)), fv(-2))
        self.assertEqual(round(fv('Infinity')), fv('Infinity'))
        self.assertEqual(round(fv('-Infinity')), fv('-Infinity'))
        self.assertEqual(round(fv('NaN')), fv('NaN'))
        self.assertEqual(round(fv('abc')), fv(0))

        self.assertEqual(math.floor(fv(1.5)), fv(1))
        self.assertEqual(math.floor(fv(-1.5)), fv(-2))
        self.assertEqual(math.floor(fv('Infinity')), fv('Infinity'))
        self.assertEqual(math.floor(fv('-Infinity')), fv('-Infinity'))
        self.assertEqual(math.floor(fv('NaN')), fv('NaN'))
        self.assertEqual(math.floor(fv('abc')), fv(0))

        self.assertEqual(math.ceil(fv(1.5)), fv(2))
        self.assertEqual(math.ceil(fv(-1.5)), fv(-1))
        self.assertEqual(math.ceil(fv('Infinity')), fv('Infinity'))
        self.assertEqual(math.ceil(fv('-Infinity')), fv('-Infinity'))
        self.assertEqual(math.ceil(fv('NaN')), fv('NaN'))
        self.assertEqual(math.ceil(fv('abc')), fv(0))

        self.assertEqual(math.trunc(fv(1.5)), fv(1))
        self.assertEqual(math.trunc(fv(-1.5)), fv(-1))
        self.assertEqual(math.trunc(fv('Infinity')), fv('Infinity'))
        self.assertEqual(math.trunc(fv('-Infinity')), fv('-Infinity'))
        self.assertEqual(math.trunc(fv('NaN')), fv('NaN'))
        self.assertEqual(math.trunc(fv('abc')), fv(0))

        self.assertEqual(type(int(fv(1.5))), int)
        self.assertEqual(int(fv(1.5)), 1)
        self.assertEqual(int(fv(-1.5)), -1)
        self.assertEqual(int(fv('Infinity')), 0)
        self.assertEqual(int(fv('-Infinity')), 0)
        self.assertEqual(int(fv('NaN')), 0)
        self.assertEqual(int(fv('abc')), 0)

        self.assertEqual(type(float(fv(1.5))), float)
        self.assertEqual(float(fv(1.5)), 1.5)
        self.assertEqual(float(fv(-1.5)), -1.5)
        self.assertEqual(float(fv('Infinity')), float('inf'))
        self.assertEqual(float(fv('-Infinity')), float('-inf'))
        self.assertTrue(math.isnan(float(fv('NaN'))))
        self.assertEqual(float(fv('abc')), 0.0)
コード例 #6
0
    def test_math(self):
        self.assertEqual(fv(5) + fv(3), fv(8))
        self.assertEqual(fv('5') + fv(3), fv('8'))
        self.assertEqual(fv('Infinity') + fv(3), fv('Infinity'))
        self.assertEqual(fv('Infinity') + fv('Infinity'), fv('Infinity'))
        self.assertEqual(fv('-Infinity') + fv(3), fv('-Infinity'))

        self.assertEqual(fv(5) - fv(3), fv(2))
        self.assertEqual(fv('5') - fv(3), fv('2'))
        self.assertEqual(fv('Infinity') - fv(3), fv('Infinity'))
        self.assertEqual(fv('Infinity') - fv('Infinity'), fv('NaN'))
        self.assertEqual(fv('3') - fv('Infinity'), fv('-Infinity'))

        self.assertEqual(fv(5) * fv(3), fv(15))
        self.assertEqual(fv('5') * fv(3), fv('15'))
        self.assertEqual(fv('Infinity') * fv(3), fv('Infinity'))
        self.assertEqual(fv('-Infinity') * fv(3), fv('-Infinity'))
        self.assertEqual(fv('Infinity') * fv(0), fv('NaN'))

        self.assertEqual(fv(15) / fv(3), fv(5))
        self.assertEqual(fv('15') / fv(3), fv('5'))
        self.assertEqual(fv('Infinity') / fv(3), fv('Infinity'))
        self.assertEqual(fv(3) / fv('Infinity'), fv(0))
        self.assertEqual(fv(0) / fv('Infinity'), fv(0))
        self.assertEqual(fv('Infinity') / fv(0), fv('Infinity'))
        self.assertEqual(fv(3) / fv(0), fv('Infinity'))
        self.assertEqual(fv(0) / fv(0), fv('NaN'))

        self.assertEqual(fv(10) // fv(3), fv(3))
        self.assertEqual(fv('10') // fv(3), fv('3'))
        self.assertEqual(fv('Infinity') // fv(3), fv('Infinity'))
        self.assertEqual(fv(3) // fv('Infinity'), fv(0))
        self.assertEqual(fv(0) // fv('Infinity'), fv(0))
        self.assertEqual(fv('Infinity') // fv(0), fv('Infinity'))
        self.assertEqual(fv(3) // fv(0), fv('Infinity'))
        self.assertEqual(fv(0) // fv(0), fv('NaN'))

        self.assertEqual(fv(10) % fv(3), fv(1))
        self.assertEqual(fv('10') % fv(3), fv('1'))
        self.assertEqual(fv('Infinity') % fv(3), fv('NaN'))
        self.assertEqual(fv(3) % fv('Infinity'), fv(3))
        self.assertEqual(fv(3) % fv('-Infinity'), fv(3))
コード例 #7
0
    def test_sign(self):
        self.assertEqual(fv(-5), -fv(5))
        self.assertEqual(fv(5), -fv(-5))
        self.assertEqual(fv(-5.7), -fv(5.7))
        self.assertEqual(fv(-0), -fv(0))
        self.assertEqual(fv(0), fv(-0))
        self.assertEqual(fv(0), -fv(0))
        self.assertEqual(fv('-Infinity'), -fv('Infinity'))
        self.assertEqual(fv('NaN'), -fv('NaN'))
        self.assertEqual(-fv('hello'), fv(0))
        self.assertEqual(fv('-12'), -fv('12'))

        self.assertEqual(abs(fv(-5)), fv(5))
        self.assertEqual(abs(fv(5)), fv(5))
        self.assertEqual(abs(fv(-5.7)), fv(5.7))
        self.assertEqual(abs(fv(5.7)), fv(5.7))
        self.assertEqual(abs(fv('-Infinity')), fv('Infinity'))
        self.assertEqual(abs(fv('Infinity')), fv('Infinity'))
        self.assertEqual(abs(fv('-12')), fv('12'))
        self.assertEqual(abs(fv('12')), fv('12'))