"""unit tests for module cubicweb.utils:organization: Logilab:copyright: 2001-2010 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses"""importreimportdecimalimportdatetimefromlogilab.common.testlibimportTestCase,unittest_mainfromcubicweb.utilsimportmake_uid,UStringIO,SizeConstrainedListtry:importsimplejsonfromcubicweb.utilsimportCubicWebJsonEncoderexceptImportError:simplejson=NoneclassMakeUidTC(TestCase):deftest_1(self):self.assertNotEquals(make_uid('xyz'),make_uid('abcd'))self.assertNotEquals(make_uid('xyz'),make_uid('xyz'))deftest_2(self):d=set()whilelen(d)<10000:uid=make_uid('xyz')ifuidind:self.fail(len(d))ifre.match('\d',uid):self.fail('make_uid must not return something begining with ''some numeric character, got %s'%uid)d.add(uid)classUStringIOTC(TestCase):deftest_boolean_value(self):self.assert_(UStringIO())classSizeConstrainedListTC(TestCase):deftest_append(self):l=SizeConstrainedList(10)foriinxrange(12):l.append(i)self.assertEquals(l,range(2,12))deftest_extend(self):testdata=[(range(5),range(5)),(range(10),range(10)),(range(12),range(2,12)),]forextension,expectedintestdata:l=SizeConstrainedList(10)l.extend(extension)yieldself.assertEquals,l,expectedclassJSONEncoderTC(TestCase):defsetUp(self):ifsimplejsonisNone:self.skip('simplejson not available')defencode(self,value):returnsimplejson.dumps(value,cls=CubicWebJsonEncoder)deftest_encoding_dates(self):self.assertEquals(self.encode(datetime.datetime(2009,9,9,20,30)),'"2009/09/09 20:30:00"')self.assertEquals(self.encode(datetime.date(2009,9,9)),'"2009/09/09"')self.assertEquals(self.encode(datetime.time(20,30)),'"20:30:00"')deftest_encoding_decimal(self):self.assertEquals(self.encode(decimal.Decimal('1.2')),'1.2')deftest_encoding_unknown_stuff(self):self.assertEquals(self.encode(TestCase),'null')if__name__=='__main__':unittest_main()