def it_allows_that_there_are_duplicate_plus_ids_for_same_piece_type(
     self
 ):
     sokoban_plus = SokobanPlusFactory(
         goalorder="1 1 2 2 3 3",
         boxorder="2 2 3 3 1 1",
         pieces_count=10
     )
     sokoban_plus._parse()
     assert sokoban_plus.is_valid
 def it_doesnt_convert_legacy_plus_ids_if_piece_count_is_greater_than_legacy_plus_id(
     self, sokoban_plus
 ):
     sokoban_plus = SokobanPlusFactory(
         pieces_count=SokobanPlus._LEGACY_DEFAULT_PLUS_ID,
         boxorder="1 5 42 {0} 23".
         format(SokobanPlus._LEGACY_DEFAULT_PLUS_ID),
         goalorder="1 5 42 {0} 23".
         format(SokobanPlus._LEGACY_DEFAULT_PLUS_ID)
     )
     sokoban_plus.is_enabled = True
     assert sokoban_plus.boxorder == "1 5 42 {0} 23".format(
         SokobanPlus._LEGACY_DEFAULT_PLUS_ID
     )
     assert sokoban_plus.goalorder == "1 5 42 {0} 23".format(
         SokobanPlus._LEGACY_DEFAULT_PLUS_ID
     )
 def it_converts_legacy_plus_ids_silently_if_piece_count_is_smaller_than_legacy_plus_id(
     self
 ):
     sokoban_plus = SokobanPlusFactory(
         pieces_count=10,
         boxorder="1 5 42 {0} 23".
         format(SokobanPlus._LEGACY_DEFAULT_PLUS_ID),
         goalorder="1 5 42 {0} 23".
         format(SokobanPlus._LEGACY_DEFAULT_PLUS_ID)
     )
     sokoban_plus.is_enabled = True
     assert sokoban_plus.boxorder == "1 5 42 {0} 23".format(
         SokobanPlus.DEFAULT_PLUS_ID
     )
     assert sokoban_plus.goalorder == "1 5 42 {0} 23".format(
         SokobanPlus.DEFAULT_PLUS_ID
     )
 def it_validates_there_are_not_to_many_ids(self):
     sokoban_plus = SokobanPlusFactory(
         goalorder="1 2 3 4 5 6", boxorder="5 4 3 2 1", pieces_count=5
     )
     sokoban_plus._parse()
     assert not sokoban_plus.is_valid