59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # -*- coding: utf-8 -*-
 | |
| import six
 | |
| 
 | |
| from mongoengine import *
 | |
| 
 | |
| from tests.utils import MongoDBTestCase
 | |
| 
 | |
| 
 | |
| class TestFloatField(MongoDBTestCase):
 | |
| 
 | |
|     def test_float_ne_operator(self):
 | |
|         class TestDocument(Document):
 | |
|             float_fld = FloatField()
 | |
| 
 | |
|         TestDocument.drop_collection()
 | |
| 
 | |
|         TestDocument(float_fld=None).save()
 | |
|         TestDocument(float_fld=1).save()
 | |
| 
 | |
|         self.assertEqual(1, TestDocument.objects(float_fld__ne=None).count())
 | |
|         self.assertEqual(1, TestDocument.objects(float_fld__ne=1).count())
 | |
| 
 | |
|     def test_validation(self):
 | |
|         """Ensure that invalid values cannot be assigned to float fields.
 | |
|         """
 | |
|         class Person(Document):
 | |
|             height = FloatField(min_value=0.1, max_value=3.5)
 | |
| 
 | |
|         class BigPerson(Document):
 | |
|             height = FloatField()
 | |
| 
 | |
|         person = Person()
 | |
|         person.height = 1.89
 | |
|         person.validate()
 | |
| 
 | |
|         person.height = '2.0'
 | |
|         self.assertRaises(ValidationError, person.validate)
 | |
| 
 | |
|         person.height = 0.01
 | |
|         self.assertRaises(ValidationError, person.validate)
 | |
| 
 | |
|         person.height = 4.0
 | |
|         self.assertRaises(ValidationError, person.validate)
 | |
| 
 | |
|         person_2 = Person(height='something invalid')
 | |
|         self.assertRaises(ValidationError, person_2.validate)
 | |
| 
 | |
|         big_person = BigPerson()
 | |
| 
 | |
|         for value, value_type in enumerate(six.integer_types):
 | |
|             big_person.height = value_type(value)
 | |
|             big_person.validate()
 | |
| 
 | |
|         big_person.height = 2 ** 500
 | |
|         big_person.validate()
 | |
| 
 | |
|         big_person.height = 2 ** 100000  # Too big for a float value
 | |
|         self.assertRaises(ValidationError, big_person.validate)
 |