New N2VC interface + updated libjuju
[osm/N2VC.git] / modules / libjuju / tests / unit / test_constraints.py
1 #
2 # Test our constraints parser
3 #
4
5 import unittest
6
7 from juju import constraints
8
9
10 class TestConstraints(unittest.TestCase):
11
12 def test_mem_regex(self):
13 m = constraints.MEM
14 self.assertTrue(m.match("10G"))
15 self.assertTrue(m.match("1G"))
16 self.assertFalse(m.match("1Gb"))
17 self.assertFalse(m.match("a1G"))
18 self.assertFalse(m.match("1000"))
19
20 def test_normalize_key(self):
21 _ = constraints.normalize_key
22
23 self.assertEqual(_("test-key"), "test_key")
24 self.assertEqual(_("test-key "), "test_key")
25 self.assertEqual(_(" test-key"), "test_key")
26 self.assertEqual(_("TestKey"), "test_key")
27 self.assertEqual(_("testKey"), "test_key")
28
29 def test_normalize_val(self):
30 _ = constraints.normalize_value
31
32 self.assertEqual(_("10G"), 10 * 1024)
33 self.assertEqual(_("10M"), 10)
34 self.assertEqual(_("10"), 10)
35 self.assertEqual(_("foo,bar"), ["foo", "bar"])
36
37 def test_parse_constraints(self):
38 _ = constraints.parse
39
40 self.assertEqual(
41 _("mem=10G"),
42 {"mem": 10 * 1024}
43 )
44
45 self.assertEqual(
46 _("mem=10G foo=bar,baz"),
47 {"mem": 10 * 1024, "foo": ["bar", "baz"]}
48 )