def test_invalid_data(self):
        """Test invalid "API" data."""
        board = Board(self.site, 'Talk:Pywikibot test')
        real_topic = Topic(self.site, 'Topic:Slbktgav46omarsd')
        # Topic.from_topiclist_data
        with self.assertRaises(ValueError):
            Topic.from_topiclist_data(board, 'slbktgav46omarsd',
                                      {'stuff': 'blah'})
        with self.assertRaises(ValueError):
            Topic.from_topiclist_data(board, 'slbktgav46omarsd', {
                'posts': [],
                'revisions': []
            })
        with self.assertRaises(ValueError):
            Topic.from_topiclist_data(board, 'slbktgav46omarsd', {
                'posts': {
                    'slbktgav46omarsd': ['123']
                },
                'revisions': {
                    '456': []
                }
            })
        with self.assertRaises(AssertionError):
            Topic.from_topiclist_data(
                board, 'slbktgav46omarsd', {
                    'posts': {
                        'slbktgav46omarsd': ['123']
                    },
                    'revisions': {
                        '123': {
                            'content': 789
                        }
                    }
                })

        # Post.fromJSON
        with self.assertRaises(ValueError):
            Post.fromJSON(real_topic, 'abc', {})
        with self.assertRaises(ValueError):
            Post.fromJSON(real_topic, 'abc', {'stuff': 'blah'})
        with self.assertRaises(ValueError):
            Post.fromJSON(real_topic, 'abc', {
                'posts': {
                    'abc': ['123']
                },
                'revisions': {
                    '456': []
                }
            })
        with self.assertRaises(AssertionError):
            Post.fromJSON(real_topic, 'abc', {
                'posts': {
                    'abc': ['123']
                },
                'revisions': {
                    '123': {
                        'content': 789
                    }
                }
            })
    def test_illegal_arguments(self):
        """Test illegal method arguments."""
        board = Board(self.site, 'Talk:Pywikibot test')
        real_topic = Topic(self.site, 'Topic:Slbktgav46omarsd')
        fake_topic = Topic(self.site, 'Topic:Abcdefgh12345678')
        # Topic.from_topiclist_data
        with self.assertRaises(TypeError):
            Topic.from_topiclist_data(self.site, '', {})
        with self.assertRaises(TypeError):
            Topic.from_topiclist_data(board, 521, {})
        with self.assertRaises(TypeError):
            Topic.from_topiclist_data(board, 'slbktgav46omarsd', [0, 1, 2])
        with self.assertRaises(NoPage):
            Topic.from_topiclist_data(board, 'abc', {'stuff': 'blah'})

        # Post.fromJSON
        with self.assertRaises(TypeError):
            Post.fromJSON(board, 'abc', {})
        with self.assertRaises(TypeError):
            Post.fromJSON(real_topic, 1234, {})
        with self.assertRaises(TypeError):
            Post.fromJSON(real_topic, 'abc', [])
        with self.assertRaises(NoPage):
            Post.fromJSON(fake_topic, 'abc', {'posts': [], 'revisions': []})