from decimal import Decimal import unittest from pyson.ObjectMapper import ObjectMapper from geniusweb.actions.PartyId import PartyId from geniusweb.issuevalue.Bid import Bid from geniusweb.issuevalue.DiscreteValue import DiscreteValue from geniusweb.issuevalue.NumberValue import NumberValue class BidTest (unittest.TestCase) : pyson=ObjectMapper() actor=PartyId("myid") bid=Bid({'fte':NumberValue(Decimal(3)), 'leasecar':DiscreteValue('yes')}) bid2=Bid({'fte':NumberValue(Decimal(3)), 'leasecar':DiscreteValue('no')}) bid3=Bid({'fte':NumberValue(Decimal(-3)), 'leasecar':DiscreteValue('yes')}) def testBadValue(self): self.assertRaises(ValueError, lambda:Bid({"iss":3})) def testSerialize(self): print(str(self.pyson.toJson(self.bid))) self.assertEqual({'issuevalues':{'fte': 3, 'leasecar': 'yes'}},\ self.pyson.toJson(self.bid)) self.assertEqual({'issuevalues':{'fte': -3, 'leasecar': 'yes'}},\ self.pyson.toJson(self.bid3)) def testDeserialize(self): jsonoffer= self.pyson.toJson(self.bid) self.assertEqual(self.bid, self.pyson.parse(jsonoffer, Bid)) def testNonValue(self): self.assertRaises(ValueError, lambda: Bid({"a":12})) def testRepr(self): self.assertEqual("Bid{'fte': 3, 'leasecar': yes}", repr(self.bid)) def testEqual(self): self.assertEqual(self.bid, self.bid) self.assertNotEqual(self.bid, self.bid2) self.assertEqual(hash(self.bid), hash(self.bid)) self.assertNotEqual(hash(self.bid), hash(self.bid2))