Skip to content

Commit

Permalink
Update tests with from_dict tests
Browse files Browse the repository at this point in the history
  • Loading branch information
TomTheBear committed Mar 7, 2021
1 parent 009ffc0 commit 2c85cc0
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 2 deletions.
1 change: 1 addition & 0 deletions tests/all_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
'test_machinestate',
'test_repr',
'test_config',
'test_fromdict',
]
)

Expand Down
75 changes: 75 additions & 0 deletions tests/test_fromdict.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#!/usr/bin/env python3
"""
Tests for from_dict() function
"""

import unittest
import machinestate
from tempfile import NamedTemporaryFile
from locale import getpreferredencoding

ENCODING = getpreferredencoding()

class TestFromDict(unittest.TestCase):
def setUp(self):
self.ms = machinestate.MachineState()
self.ms.generate()
self.ms.update()
self.ci = machinestate.CpuInfo()
self.ci.generate()
self.ci.update()
def test_fromdictCompareClass(self):
mscopy = machinestate.MachineState.from_dict(self.ms.get(meta=True))
self.assertEqual(self.ms, mscopy)
def test_fromdictCompareDict(self):
mscopy = machinestate.MachineState.from_dict(self.ms.get(meta=True))
self.assertEqual(self.ms, mscopy.get())
def test_fromdictCompareDictMeta(self):
mscopy = machinestate.MachineState.from_dict(self.ms.get(meta=True))
self.assertEqual(self.ms, mscopy.get(meta=True))
def test_fromdictCompareJSON(self):
mscopy = machinestate.MachineState.from_dict(self.ms.get(meta=True))
self.assertEqual(self.ms, mscopy.get_json())
def test_fromdictCompareJSONFile(self):
mscopy = machinestate.MachineState.from_dict(self.ms.get(meta=True))
jsonfp = NamedTemporaryFile(mode="wb", delete=True)
jsonfp.write(bytes(mscopy.get_json(), ENCODING))
jsonfp.seek(0)
self.assertEqual(self.ms, jsonfp.name)
jsonfp.close()
def test_fromdictCompareDictDict(self):
mscopy = machinestate.MachineState.from_dict(self.ms.get(meta=True))
self.assertEqual(self.ms.get(), mscopy.get())
def test_fromdictCompareDictMetaDictMeta(self):
mscopy = machinestate.MachineState.from_dict(self.ms.get(meta=True))
self.assertEqual(self.ms.get(meta=True), mscopy.get(meta=True))
def test_fromdictCompareDictMetaDict(self):
mscopy = machinestate.MachineState.from_dict(self.ms.get(meta=True))
self.assertNotEqual(self.ms.get(), mscopy.get(meta=True))
def test_fromdictLoadFaulty(self):
cicopy = {}
for k,v in self.ci.get(meta=True).items():
cicopy[k] = v
cicopy["Model"] = cicopy["Model"] - 1
faulty = machinestate.CpuInfo.from_dict(cicopy)
self.assertNotEqual(self.ci.get(), faulty.get())
def test_fromdictNoMeta(self):
#mscopy = machinestate.MachineState.from_dict(self.ms.get())
self.assertRaises(ValueError, machinestate.MachineState.from_dict, self.ms.get())
def test_fromdictClass(self):
mscopy = machinestate.MachineState.from_dict(self.ms)
self.assertEqual(self.ms, mscopy.get(meta=True))
def test_fromdictEmptyDict(self):
self.assertRaises(ValueError, machinestate.MachineState.from_dict, {})
def test_fromdictFaultyNoMetaDict(self):
faulty = { "1" : 3, "2" : 24, "5" : 45}
self.assertRaises(ValueError, machinestate.MachineState.from_dict, faulty)
def test_fromdictFaultyMetaDict(self):
faulty = { "1" : 3, "2" : 24, "5" : 45, "_meta" : "foobar"}
self.assertRaises(ValueError, machinestate.MachineState.from_dict, faulty)
def test_fromdictFaultyMetaMachineStateDict(self):
faulty = { "1" : 3, "2" : 24, "5" : 45, "_meta" : "MachineState()"}
mscopy = machinestate.MachineState.from_dict(faulty)
self.assertEqual(mscopy.get(), {})
def test_fromdictFaultyMetaCpuInfoDict(self):
self.assertRaises(ValueError, machinestate.MachineState.from_dict, self.ci.get(meta=True))
17 changes: 15 additions & 2 deletions tests/test_machinestate.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,25 @@
class TestMachineState(unittest.TestCase):
def test_getJson(self):
cls = MachineState()
outstr = cls.get_json()
outstr = cls.get_json(meta=False)
self.assertEqual(outstr, "{}")
def test_getJsonMeta(self):
cls = MachineState()
outstr = cls.get_json(meta=True)
self.assertEqual(outstr, "{\n \"_meta\": \"MachineState()\"\n}")
def test_CompareJson(self):
cls = MachineState()
cls.generate()
cls.update()
outstr = cls.get_json()
self.assertNotEqual(outstr, "{}")
self.assertTrue(cls == outstr)
self.assertTrue(cls.get_json() == outstr)
def test_fromDictCompare(self):
ms = MachineState();
ms.generate();
ms.update()
msdict = ms.get(meta=True)
mscopy = MachineState.from_dict(msdict)
self.assertEqual(ms, mscopy)
self.assertEqual(ms.get(meta=False), mscopy.get(meta=False))
self.assertEqual(ms.get(meta=True), mscopy.get(meta=True))

0 comments on commit 2c85cc0

Please sign in to comment.