4 config = Configuration(
"""
33 assert config[
"str"] ==
"hello world"
34 assert config[
"int"] == 123
35 assert config[
"group.str"] ==
"foobar"
36 assert config[
"group"][
"float"] == -10.0
37 assert config[
"listOfGroups"][
"[1].isGroup2"] ==
True
39 config[
"str"] =
"newvalue"
40 config[
"group.str"] =
"barfoo"
41 config[
"listOfGroups"][
"[1].isGroup2"] =
False
42 config[
"newsetting"] =
"hello"
43 config[
"newgroup.setting"] = 777
44 assert config[
"str"] ==
"newvalue"
45 assert config[
"group"][
"str"] ==
"barfoo"
46 assert config[
"listOfGroups"][
"[1]"][
"isGroup2"] ==
False
47 assert config[
"listOfGroups"][
"[1].isGroup2"] ==
False
48 assert config[
"newsetting"] ==
"hello"
49 assert config[
"newgroup.setting"] == 777
51 assert "str" in config
52 assert "int" in config
53 assert "group" in config
54 assert "group.str" in config
55 assert "float" in config[
"group"]
56 assert "group.group" in config
57 assert "group.group.str" in config
58 assert "foobar" not in config
59 assert "list" in config
60 assert "list.[0]" in config
61 assert "[0]" in config[
"list"]
62 assert "[4]" not in config[
"list"]
63 assert "list.[4]" not in config
64 assert "listOfGroups.[0].name" in config
65 assert "[1]" in config[
"listOfGroups"]
66 assert "name" in config[
"listOfGroups.[0]"]
67 assert "listOfGroups.[1].name" in config
68 assert "listOfGroups.[2].name" not in config
70 assert "newgroup2" not in config
71 newgroup2 = config.createGroup(
"newgroup2")
72 config.createGroup(
"newgroup2.asdf.foo")
73 newgroup2.createGroup(
"sub")
74 newgroup2.createGroup(
"sub")
75 assert "newgroup2" in config
76 assert "newgroup2.asdf.foo" in config
77 assert "newgroup2.sub" in config
78 assert "sub" in config[
"newgroup2"]
79 assert "sub" in newgroup2
81 del config[
"newgroup2.asdf.foo"]
82 assert "newgroup2.asdf.foo" not in config
83 del config[
"newgroup2"]
84 assert "newgroup2" not in config
89 assert config.isEquivalent(config)
90 copiedConfig = copy.deepcopy(config)
91 assert config.isEquivalent(copiedConfig)
92 assert copiedConfig.isEquivalent(config)
93 del config[
"newgroup.setting"]
94 assert not config.isEquivalent(copiedConfig)
95 assert not copiedConfig.isEquivalent(config)
97 copiedConfig = copy.deepcopy(config)
98 assert config.isEquivalent(copiedConfig)
99 assert copiedConfig.isEquivalent(config)
100 del config[
"newgroup"]
101 assert not config.isEquivalent(copiedConfig)
102 assert not copiedConfig.isEquivalent(config)
104 copiedConfig = copy.deepcopy(config)
105 del config[
"newsetting"]
106 assert not config.isEquivalent(copiedConfig)
107 assert not copiedConfig.isEquivalent(config)
110 config = Configuration(
"foo: [1, 2, 3]")
111 assert "foo" in config
112 assert "foo.[0]" in config
113 assert "[0]" in config[
"foo"]
114 assert config[
"foo.[0]"] == 1
115 assert config[
"foo.[1]"] == 2
116 assert config[
"foo.[2]"] == 3
117 config[
"foo.[0]"] = 4
118 assert config[
"foo.[0]"] == 4
119 assert config[
"foo.[1]"] == 2
120 assert config[
"foo.[2]"] == 3
121 assert config.isEquivalent(config)
124 def test_canonicalizing_constructor__LeesEdwards():
138 type = "Lees-Edwards"
146 configNotCanonicalized = Configuration(configString,
False)
147 configCanonicalized = Configuration(configString)
149 assert "boundaryConditions" in configNotCanonicalized
150 assert "boundaryConditions" in configCanonicalized
153 assert "boundaryConditions.type" in configNotCanonicalized
154 assert configNotCanonicalized[
"boundaryConditions.type"] ==
"Lees-Edwards"
155 assert not "boundaryConditions.type" in configCanonicalized
157 assert "type" in configNotCanonicalized[
"boundaryConditions"]
159 configNotCanonicalized[
"boundaryConditions"][
"type"] ==
"Lees-Edwards"
160 assert not "type" in configCanonicalized[
"boundaryConditions"]
163 assert "boundaryConditions.shearRate" in configNotCanonicalized
164 assert configNotCanonicalized[
"boundaryConditions.shearRate"] == 0.123
165 assert not "boundaryConditions.shearRate" in configCanonicalized
167 assert "shearRate" in configNotCanonicalized[
"boundaryConditions"]
168 assert configNotCanonicalized[
"boundaryConditions"][
"shearRate"] == 0.123
169 assert not "shearRate" in configCanonicalized[
"boundaryConditions"]
172 assert not "boundaryConditions.LeesEdwards" in configNotCanonicalized
173 assert "boundaryConditions.LeesEdwards" in configCanonicalized
176 not "boundaryConditions.LeesEdwards.shearRate" in configNotCanonicalized
177 assert "boundaryConditions.LeesEdwards.shearRate" in configCanonicalized
180 configCanonicalized[
"boundaryConditions.LeesEdwards.shearRate"] == 0.123
182 configCanonicalized[
"boundaryConditions"][
"LeesEdwards"][
"shearRate"] \
186 def test_canonicalizing_constructor__cellSubdivision():
212 configNotCanonicalized = Configuration(configString,
False)
213 configCanonicalized = Configuration(configString)
215 assert "instrumentation" in configNotCanonicalized
216 assert "instrumentation" in configCanonicalized
219 assert "instrumentation.cellSubdivision" in configNotCanonicalized
220 assert configNotCanonicalized[
"instrumentation.cellSubdivision.x"] == 5
221 assert configNotCanonicalized[
"instrumentation.cellSubdivision.y"] == 6
222 assert configNotCanonicalized[
"instrumentation.cellSubdivision.z"] == 7
223 assert not "instrumentation.cellSubdivision" in configCanonicalized
225 assert "cellSubdivision" in configNotCanonicalized[
"instrumentation"]
226 assert configNotCanonicalized[
"instrumentation"][
"cellSubdivision.x"] == 5
227 assert configNotCanonicalized[
"instrumentation"][
"cellSubdivision.y"] == 6
228 assert configNotCanonicalized[
"instrumentation"][
"cellSubdivision.z"] == 7
229 assert not "cellSubdivision" in configCanonicalized[
"instrumentation"]
232 assert not "instrumentation.flowProfile" in configNotCanonicalized
233 assert not "instrumentation.densityProfile" in configNotCanonicalized
234 assert "instrumentation.flowProfile" in configCanonicalized
235 assert "instrumentation.flowProfile.cellSubdivision" in configCanonicalized
236 assert "instrumentation.densityProfile" in configCanonicalized
238 "instrumentation.densityProfile.cellSubdivision" in configCanonicalized
241 configCanonicalized[
"instrumentation.flowProfile.cellSubdivision.x"] \
244 configCanonicalized[
"instrumentation.flowProfile.cellSubdivision.y"] \
247 configCanonicalized[
"instrumentation.flowProfile.cellSubdivision.z"] \
251 configCanonicalized[
"instrumentation"][
"densityProfile"]\
252 [
"cellSubdivision"][
"x"] \
255 configCanonicalized[
"instrumentation"][
"densityProfile"]\
256 [
"cellSubdivision"][
"y"] \
259 configCanonicalized[
"instrumentation"][
"densityProfile"]\
260 [
"cellSubdivision"][
"z"] \
266 def test_isEquivalent():
267 config = Configuration(
"""
298 with pytest.raises(TypeError):
299 config.isEquivalent(
"string")
300 with pytest.raises(TypeError):
301 config.isEquivalent([config])
302 with pytest.raises(TypeError):
303 config.isEquivalent(config, (
lambda x: x))
304 with pytest.raises(TypeError):
305 config.isEquivalent(config, [
lambda x: x,
"hi"])
307 config[
"newsetting"] =
"hello"
308 config[
"newgroup.setting"] = 777
312 assert config.isEquivalent(config)
313 copiedConfig = copy.deepcopy(config)
314 assert config.isEquivalent(copiedConfig)
315 assert copiedConfig.isEquivalent(config)
316 del config[
"newgroup.setting"]
317 assert not config.isEquivalent(copiedConfig)
318 assert not copiedConfig.isEquivalent(config)
320 copiedConfig = copy.deepcopy(config)
321 assert config.isEquivalent(copiedConfig)
322 assert copiedConfig.isEquivalent(config)
323 del config[
"newgroup"]
324 assert not config.isEquivalent(copiedConfig)
325 assert not copiedConfig.isEquivalent(config)
327 copiedConfig = copy.deepcopy(config)
328 del config[
"newsetting"]
329 assert not config.isEquivalent(copiedConfig)
330 assert not copiedConfig.isEquivalent(config)
333 config = Configuration(
"foo: [1, 2, 3]")
334 config[
"foo.[0]"] = 4
335 assert config.isEquivalent(config)
339 toplevel = "hello world"
340 group: { asdf = ["hi", "whatever"] }
341 arrayOfStrings: ["foo", "bar", "helium"]
342 arrayOfInts: [1, 2, 3]
343 listOfStrings: ("foo", "bar", "helium")
344 listOfInts: (1, 2, 3)
347 translateX =
lambda s: s.replace(
"h",
"X")
348 translateY =
lambda s: s.replace(
"w",
"Y")
349 configStringReplaced = translateX(translateY(configString))
350 config = Configuration(configString)
351 configReplaced = Configuration(configStringReplaced)
353 assert not config.isEquivalent(configReplaced)
354 assert not config.isEquivalent(configReplaced, [translateX])
355 assert not config.isEquivalent(configReplaced, [translateY])
356 assert config.isEquivalent(configReplaced, [translateX, translateY])
360 def test_isEquivalent_array_list_vs_group():
361 l = Configuration(
"x = (5, 10)")
362 a = Configuration(
"x = [5, 10]")
363 g = Configuration(
"x = {f = 5; t = 10}")
365 assert l.isEquivalent(l)
366 assert l.isEquivalent(a)
367 assert a.isEquivalent(a)
368 assert a.isEquivalent(l)
369 assert g.isEquivalent(g)
371 assert not l.isEquivalent(g)
372 assert not a.isEquivalent(g)
373 assert not g.isEquivalent(l)
374 assert not g.isEquivalent(a)
376 def test_isEquivalent_array_list_sizes():
377 listLong = Configuration(
"x = (2, 3, 4)")
378 listShort = Configuration(
"x = (2, 3)")
380 arrayLong = Configuration(
"x = [2, 3, 4]")
381 arrayShort = Configuration(
"x = [2, 3]")
383 longs = [listLong, arrayLong]
384 shorts = [listShort, arrayShort]
387 for otherLong
in longs:
388 assert long.isEquivalent(otherLong)
391 for otherShort
in shorts:
392 assert short.isEquivalent(otherShort)
396 assert not long.isEquivalent(short)
397 assert not short.isEquivalent(long)
400 def test_isEquivalent_array_vs_list():
401 config1 = Configuration(
"x = (2, 3, 4)")
402 config2 = Configuration(
"x = [2, 3, 4]")
403 config3 = Configuration(
"something = 2")
405 assert config1.isEquivalent(config1)
406 assert config2.isEquivalent(config2)
408 assert not config1.isEquivalent(config3)
409 assert not config2.isEquivalent(config3)
410 assert not config3.isEquivalent(config1)
411 assert not config3.isEquivalent(config2)
413 assert config1.isEquivalent(config2)
414 assert config2.isEquivalent(config1)
417 def test_getAsFlatDictionary():
418 config = Configuration(
"""
434 array = [ -1.23, 4.56 ];
454 d = config.getAsFlatDictionary()
456 assert isinstance(d, dict)
458 expectedElementCount = 0
461 assert d[
"str"] ==
"hello world"
462 expectedElementCount += 1
465 assert d[
"int"] == 123
466 expectedElementCount += 1
469 assert d[
"float"] == -4.56
470 expectedElementCount += 1
472 assert "group.str" in d
473 assert d[
"group.str"] ==
"foobar"
474 expectedElementCount += 1
476 assert "group.int" in d
477 assert d[
"group.int"] == -789
478 expectedElementCount += 1
480 assert "group.float" in d
481 assert d[
"group.float"] == -10.0
482 expectedElementCount += 1
484 assert "group.group.str" in d
485 assert d[
"group.group.str"] ==
"level3"
486 expectedElementCount += 1
488 assert "list.[0]" in d
489 assert d[
"list.[0]"] == 0
490 expectedElementCount += 1
492 assert "list.[1]" in d
493 assert d[
"list.[1]"] == 1
494 expectedElementCount += 1
496 assert "list.[2]" in d
497 assert d[
"list.[2]"] == 2
498 expectedElementCount += 1
500 assert "list.[3]" in d
501 assert d[
"list.[3]"] == 3
502 expectedElementCount += 1
504 assert "array.[0]" in d
505 assert d[
"array.[0]"] == -1.23
506 expectedElementCount += 1
508 assert "array.[1]" in d
509 assert d[
"array.[1]"] == 4.56
510 expectedElementCount += 1
512 assert "listOfGroups.[0].name" in d
513 assert d[
"listOfGroups.[0].name"] ==
"group1"
514 expectedElementCount += 1
516 assert "listOfGroups.[1].name" in d
517 assert d[
"listOfGroups.[1].name"] ==
"group2"
518 expectedElementCount += 1
520 assert "listOfGroups.[1].name" in d
521 assert d[
"listOfGroups.[1].isGroup2"] ==
True
522 expectedElementCount += 1
524 assert "listOfGroups.[2]" in d
525 assert d[
"listOfGroups.[2]"]
is None
526 expectedElementCount += 1
528 assert "emptyGroup" in d
529 assert d[
"emptyGroup"] ==
None
530 expectedElementCount += 1
532 assert "emptyArray" in d
533 assert d[
"emptyArray"] ==
None
534 expectedElementCount += 1
536 assert "emptyList" in d
537 assert d[
"emptyList"] ==
None
538 expectedElementCount += 1
540 assert len(d) == expectedElementCount
543 def test_getDifferencesAsFlatDictionary_argumentType():
544 config = Configuration(
"foo = 1")
547 config.getDifferencesAsFlatDictionary(3)
552 def test_getDifferencesAsFlatDictionary():
553 config1 = Configuration(
"""
586 config2 = Configuration(
"""
612 assert len(config1.getDifferencesAsFlatDictionary(config1)) == 0
613 assert len(config2.getDifferencesAsFlatDictionary(config2)) == 0
615 d1 = config1.getDifferencesAsFlatDictionary(config2)
616 d2 = config2.getDifferencesAsFlatDictionary(config1)
618 expectedElementCount = 0
622 assert d1[
"int"] == [[1234], [123]]
623 assert d2[
"int"] == [[123], [1234]]
624 expectedElementCount += 1
628 assert d1[
"float"] == [[-4.56], []]
629 assert d2[
"float"] == [[], [-4.56]]
630 expectedElementCount += 1
632 assert "otherFloat" in d1
633 assert "otherFloat" in d2
634 assert d1[
"otherFloat"] == [[], [-4.56]]
635 assert d2[
"otherFloat"] == [[-4.56], []]
636 expectedElementCount += 1
638 assert "group.str" in d1
639 assert "group.str" in d2
640 assert d1[
"group.str"] == [[
"foobar"], [
"baz"]]
641 assert d2[
"group.str"] == [[
"baz"], [
"foobar"]]
642 expectedElementCount += 1
644 assert "group.group.str" in d1
645 assert "group.group.str" in d2
646 assert d1[
"group.group.str"] == [[
"level3"], []]
647 assert d2[
"group.group.str"] == [[], [
"level3"]]
648 expectedElementCount += 1
650 assert "list.[2]" in d1
651 assert "list.[2]" in d2
652 assert d1[
"list.[2]"] == [[2], [3]]
653 assert d2[
"list.[2]"] == [[3], [2]]
654 expectedElementCount += 1
656 assert "list.[3]" in d1
657 assert "list.[3]" in d2
658 assert d1[
"list.[3]"] == [[3], []]
659 assert d2[
"list.[3]"] == [[], [3]]
660 expectedElementCount += 1
662 assert "listOfGroups.[0]" in d1
663 assert "listOfGroups.[0]" in d2
664 assert d1[
"listOfGroups.[0]"] == [[], [
None]]
665 assert d2[
"listOfGroups.[0]"] == [[
None], []]
666 expectedElementCount += 1
668 assert "listOfGroups.[0].name" in d1
669 assert "listOfGroups.[0].name" in d2
670 assert d1[
"listOfGroups.[0].name"] == [[
"group1"], []]
671 assert d2[
"listOfGroups.[0].name"] == [[], [
"group1"]]
672 expectedElementCount += 1
674 assert "emptyGroup" in d1
675 assert "emptyGroup" in d2
676 assert d1[
"emptyGroup"] == [[
None], []]
677 assert d2[
"emptyGroup"] == [[], [
None]]
678 expectedElementCount += 1
680 assert len(d1) == expectedElementCount
681 assert len(d2) == expectedElementCount
685 def test_saveToParameterFile():
689 with tempfile.NamedTemporaryFile(
"w")
as tmpf:
692 config = Configuration(
"""
726 with pytest.raises(TypeError):
727 config.saveToParameterFile(0)
728 with pytest.raises(TypeError):
729 config.saveToParameterFile(
"/tmp/foo", [])
732 listOfAdditionalParameters = []
733 listOfAdditionalParameters.append({})
734 listOfAdditionalParameters.append(
736 "another-param" : 1.234,
737 "additional-param":
"foo",
740 for additionalParameters
in listOfAdditionalParameters:
741 config.saveToParameterFile(path, additionalParameters)
743 with open(path,
"r")
as f:
754 assert lineCount == 2
756 flatDict = config.getAsFlatDictionary()
757 flatDict.update(additionalParameters)
759 assert headerLine ==
"\t".join(sorted(flatDict)) +
"\n"
761 expectedValueLine =
""
762 for key
in sorted(flatDict):
763 if expectedValueLine:
764 expectedValueLine +=
"\t"
766 value = flatDict[key]
768 if isinstance(value, str):
769 expectedValueLine +=
"{" + value +
"}"
771 expectedValueLine +=
"None"
772 elif isinstance(value, bool):
773 expectedValueLine +=
"true" if value
else "false"
775 expectedValueLine += str(value)
777 assert valueLine == expectedValueLine
779 def test___getitem__():
780 config = Configuration(
"""
811 with pytest.raises(TypeError):
812 config.__getitem__(0)
813 with pytest.raises(TypeError):
814 config.__getitem__(config)
816 with pytest.raises(KeyError):
817 config.__getitem__(
"malformed..key")
818 with pytest.raises(KeyError):
819 config.__getitem__(
"malformedKey.")
820 with pytest.raises(KeyError):
821 config.__getitem__(
".malformedKey")
822 with pytest.raises(KeyError):
823 config.__getitem__(
"nonexistent")
826 assert config.__getitem__(
"str") ==
"hello world"
827 assert config.__getitem__(
"int") == 123
828 assert config.__getitem__(
"group.str") ==
"foobar"
829 assert config.__getitem__(
"group").__getitem__(
"float") == -10.0
830 assert config.__getitem__(
"listOfGroups").__getitem__(
"[1].isGroup2") ==
True
832 config[
"str"] =
"newvalue"
833 config[
"group.str"] =
"barfoo"
834 config[
"listOfGroups"][
"[1].isGroup2"] =
False
835 config[
"newsetting"] =
"hello"
836 config[
"newgroup.setting"] = 777
837 assert config.__getitem__(
"str") ==
"newvalue"
838 assert config.__getitem__(
"group").__getitem__(
"str") ==
"barfoo"
840 config.__getitem__(
"listOfGroups"). \
841 __getitem__(
"[1]").__getitem__(
"isGroup2") ==
False
843 config.__getitem__(
"listOfGroups").__getitem__(
"[1].isGroup2") ==
False
844 assert config.__getitem__(
"newsetting") ==
"hello"
845 assert config.__getitem__(
"newgroup.setting") == 777
849 config = Configuration(
"foo: [1, 2, 3]")
850 assert config.__getitem__(
"foo.[0]") == 1
851 assert config.__getitem__(
"foo.[1]") == 2
852 assert config.__getitem__(
"foo.[2]") == 3
853 config[
"foo.[0]"] = 4
854 assert config.__getitem__(
"foo.[0]") == 4
855 assert config.__getitem__(
"foo.[1]") == 2
856 assert config.__getitem__(
"foo.[2]") == 3
859 def test___getitem___arrayInGroup():
863 array = [1.0, 0.0, -3.5]
866 config = Configuration(configString)
868 assert config[
"group.array.[0]"] == 1.0
869 assert config[
"group.array.[1]"] == 0.0
870 assert config[
"group.array.[2]"] == -3.5
872 assert config[
"group"][
"array.[0]"] == 1.0
873 assert config[
"group"][
"array.[1]"] == 0.0
874 assert config[
"group"][
"array.[2]"] == -3.5
876 assert config[
"group"][
"array"][
"[0]"] == 1.0
877 assert config[
"group"][
"array"][
"[1]"] == 0.0
878 assert config[
"group"][
"array"][
"[2]"] == -3.5
881 def test___setitem__():
882 config = Configuration(
"""
913 with pytest.raises(TypeError):
914 config.__setitem__(0, 0)
915 with pytest.raises(TypeError):
916 config.__setitem__(config, 0)
918 with pytest.raises(KeyError):
919 config.__setitem__(
"", 0)
920 with pytest.raises(KeyError):
921 config.__setitem__(
"malformed..key", 0)
922 with pytest.raises(KeyError):
923 config.__setitem__(
"malformedKey.", 0)
924 with pytest.raises(KeyError):
925 config.__setitem__(
".malformedKey", 0)
928 assert config[
"str"] ==
"hello world"
929 assert config[
"int"] == 123
930 assert config[
"group.str"] ==
"foobar"
931 assert config[
"group"][
"float"] == -10.0
932 assert config[
"listOfGroups"][
"[1].isGroup2"] ==
True
934 config.__setitem__(
"str",
"newvalue")
935 config.__setitem__(
"group.str",
"barfoo")
936 config[
"listOfGroups"].__setitem__(
"[1].isGroup2",
False)
937 config.__setitem__(
"newsetting",
"hello")
938 config.__setitem__(
"newgroup.setting", 777)
939 assert config[
"str"] ==
"newvalue"
940 assert config[
"group"][
"str"] ==
"barfoo"
941 assert config[
"listOfGroups"][
"[1]"][
"isGroup2"] ==
False
942 assert config[
"listOfGroups"][
"[1].isGroup2"] ==
False
943 assert config[
"newsetting"] ==
"hello"
944 assert config[
"newgroup.setting"] == 777
946 config = Configuration(
"foo: [1, 2, 3]")
947 assert config[
"foo.[0]"] == 1
948 assert config[
"foo.[1]"] == 2
949 assert config[
"foo.[2]"] == 3
950 config.__setitem__(
"foo.[0]", 4)
951 assert config[
"foo.[0]"] == 4
952 assert config[
"foo.[1]"] == 2
953 assert config[
"foo.[2]"] == 3
956 def test___setitem___newValueIsGroup():
961 array = [1.0, 0.0, -3.5]
968 config = Configuration(configString)
970 config[
"copy"] = config[
"group"]
972 assert config[
"copy.array.[0]"] == 1.0
973 assert config[
"copy.array.[1]"] == 0.0
974 assert config[
"copy.array.[2]"] == -3.5
975 assert config[
"copy.subgroup.value"] ==
"string"
978 config[
"newGroup.copy"] = config[
"group"]
980 assert config[
"newGroup.copy.array.[0]"] == 1.0
981 assert config[
"newGroup.copy.array.[1]"] == 0.0
982 assert config[
"newGroup.copy.array.[2]"] == -3.5
983 assert config[
"newGroup.copy.subgroup.value"] ==
"string"
986 def test___delitem__():
991 array = [1.0, 0.0, -3.5]
998 config = Configuration(configString)
1001 with pytest.raises(TypeError):
1004 assert "topSetting" in config
1005 assert "group" in config
1006 assert "group.array" in config
1007 assert "group.subgroup" in config
1008 assert "group.subgroup.value" in config
1012 assert "topSetting" in config
1013 assert "group" in config
1014 assert "group.array" in config
1015 assert "group.subgroup" in config
1016 assert "group.subgroup.value" in config
1018 del config[
"group.foo"]
1019 assert "topSetting" in config
1020 assert "group" in config
1021 assert "group.array" in config
1022 assert "group.subgroup" in config
1023 assert "group.subgroup.value" in config
1025 del config[
"foo.bar"]
1026 assert "topSetting" in config
1027 assert "group" in config
1028 assert "group.array" in config
1029 assert "group.subgroup" in config
1030 assert "group.subgroup.value" in config
1033 del config[
"group.array"]
1034 assert "topSetting" in config
1035 assert "group" in config
1036 assert not "group.array" in config
1037 assert "group.subgroup" in config
1038 assert "group.subgroup.value" in config
1040 del config[
"topSetting"]
1041 assert not "topSetting" in config
1042 assert "group" in config
1043 assert not "group.array" in config
1044 assert "group.subgroup" in config
1045 assert "group.subgroup.value" in config
1048 assert not "topSetting" in config
1049 assert not "group" in config
1050 assert not "group.array" in config
1051 assert not "group.subgroup" in config
1052 assert not "group.subgroup.value" in config
1055 def test___contains__():
1060 array = [1.0, 0.0, -3.5]
1067 config = Configuration(configString)
1070 with pytest.raises(TypeError):
1073 assert "topSetting" in config
1074 assert "group" in config
1075 assert "group.array" in config
1076 assert "group.subgroup" in config
1077 assert "group.subgroup.value" in config
1079 assert not "foo" in config
1080 assert not "group.array.subgroup" in config
1081 assert not "group.array.subgroup.value" in config
1082 assert not "group.subgroup.foo" in config
1083 assert not "group.foo" in config
1084 assert not "group.foo.bar" in config
1087 def test___repr__():
1092 array = [1.0, 0.0, -3.5]
1100 config = Configuration(
"")
1101 assert isinstance(config.__repr__(), str)
1103 config = Configuration(configString)
1104 assert isinstance(config.__repr__(), str)
1106 loadedConfig = Configuration(config.__repr__())
1107 assert loadedConfig.isEquivalent(config)