@@ -35,6 +35,52 @@ def test_name_part(doc):
3535 s .name_part (3 , "left wing" )
3636
3737
38+ def test_a_rename_keeps_the_part_severable (doc ):
39+ d = doc ()
40+ s = P .PartSession (d )
41+ s .name_part (3 , "tail" , severable = True )
42+ s .name_part (3 , "stump" )
43+ assert d .manifest .parts ["stump" ].severable and list (d .manifest .parts ) == ["stump" ]
44+ s .name_part (3 , "tail" , severable = False )
45+ assert not d .manifest .parts ["tail" ].severable
46+
47+
48+ def test_sever_below (doc ):
49+ d = doc ("\n [parts.tail]\n index = 3\n severable = true\n [parts.head]\n index = 1\n " )
50+ s = P .PartSession (d )
51+ assert s .severable (3 ) and not s .severable (1 ) and s .sever_below (3 ) is None
52+ before = d .manifest
53+ s .set_sever_below (3 , 50 )
54+ assert d .manifest .parts ["tail" ].sever_below == 50 and s .sever_below (3 ) == 50
55+ s .set_sever_below (3 , 50 )
56+ d .undo ()
57+ assert d .manifest == before , "the same value is no second step"
58+ s .set_sever_below (3 , 50 )
59+ s .set_sever_below (3 , 0 )
60+ assert d .manifest .parts ["tail" ].sever_below is None
61+ s .set_sever_below (3 , 25 )
62+ s .name_part (3 , "stump" )
63+ assert d .manifest .parts ["stump" ].sever_below == 25 , "a rename keeps it"
64+ s .name_part (3 , "stump" , severable = False )
65+ assert d .manifest .parts ["stump" ].sever_below is None
66+
67+
68+ def test_sever_below_refusals (doc ):
69+ d = doc ("\n [parts.tail]\n index = 3\n severable = true\n [parts.head]\n index = 1\n " )
70+ s = P .PartSession (d )
71+ with pytest .raises (ManifestError , match = "sever_below goes with severable" ):
72+ s .set_sever_below (1 , 50 )
73+ with pytest .raises (ManifestError , match = "part 5 has no name yet" ):
74+ s .set_sever_below (5 , 50 )
75+ with pytest .raises (ManifestError , match = "HP percent, 1..100" ):
76+ s .set_sever_below (3 , 101 )
77+ s .name_part (4 , "wing" , severable = True )
78+ s .set_sever_below (3 , 50 )
79+ with pytest .raises (ManifestError , match = "the gate holds one" ):
80+ s .set_sever_below (4 , 30 )
81+ assert d .manifest .parts ["wing" ].sever_below is None
82+
83+
3884def test_grid (doc ):
3985 d = doc (GRID )
4086 s = P .PartSession (d )
0 commit comments