# Path: tests/test_ipuz.py
# class IPUZBaseTestCase(unittest.TestCase):
# 
#     def validate_puzzle(self, json_data, expected_exception, **kwargs):
#         with self.assertRaises(ipuz.IPUZException) as cm:
#             ipuz.read(json.dumps(json_data), **kwargs)
#         self.assertEqual(str(cm.exception), expected_exception)
# 
#     def validate(self, expected_exception):
#         self.validate_puzzle(self.puzzle, expected_exception)


from .test_ipuz import IPUZBaseTestCase
        self.validate("Invalid enter value found")

    def test_start_is_dict(self):
        self.puzzle["start"] = 3
        self.validate("Invalid start value found")

    def test_start_has_non_empty_keys(self):
        self.puzzle["start"] = {"": {"cells": [[1, 1]]}}
        self.validate("Invalid start value found")

    def test_start_has_invalid_groupspec(self):
        self.puzzle["start"] = {"name": {"invalid_key": 3}}
        self.validate("Invalid start value found")

    def test_saved_is_dict(self):
        self.puzzle["saved"] = 3
        self.validate("Invalid saved value found")

    def test_saved_has_non_empty_keys(self):
        self.puzzle["saved"] = {"": {"cells": [[1, 1]]}}
        self.validate("Invalid saved value found")

    def test_saved_has_invalid_groupspec(self):
        self.puzzle["saved"] = {"name": {"invalid_key": 3}}
        self.validate("Invalid saved value found")

    def test_end_is_dict(self):
        self.puzzle["end"] = 3
        self.validate("Invalid end value found")


# Path: tests/test_ipuz.py
# class IPUZBaseTestCase(unittest.TestCase):
# 
#     def validate_puzzle(self, json_data, expected_exception, **kwargs):
#         with self.assertRaises(ipuz.IPUZException) as cm:
#             ipuz.read(json.dumps(json_data), **kwargs)
#         self.assertEqual(str(cm.exception), expected_exception)
# 
#     def validate(self, expected_exception):
#         self.validate_puzzle(self.puzzle, expected_exception)


# Path: tests/test_block.py
from .test_ipuz import IPUZBaseTestCase

        self.validate("Invalid enter value found")

    def test_start_is_dict(self):
        self.puzzle["start"] = 3
        self.validate("Invalid start value found")

    def test_start_has_non_empty_keys(self):
        self.puzzle["start"] = {"": {"cells": [[1, 1]]}}
        self.validate("Invalid start value found")

    def test_start_has_invalid_groupspec(self):
        self.puzzle["start"] = {"name": {"invalid_key": 3}}
        self.validate("Invalid start value found")

    def test_saved_is_dict(self):
        self.puzzle["saved"] = 3
        self.validate("Invalid saved value found")

    def test_saved_has_non_empty_keys(self):
        self.puzzle["saved"] = {"": {"cells": [[1, 1]]}}
        self.validate("Invalid saved value found")

    def test_saved_has_invalid_groupspec(self):
        self.puzzle["saved"] = {"name": {"invalid_key": 3}}
        self.validate("Invalid saved value found")

    def test_end_is_dict(self):
        self.puzzle["end"] = 3
        self.validate("Invalid end value found")


    def test_end_has_non_empty_keys(self):