def test_inkw_atmost_tuple (self):
        assert _inkw(atmost=())()
        assert _inkw(atmost=())(4, 8)
        assert _inkw(atmost=('jack',))()
        assert _inkw(atmost=('jack',))(4, 8)
        assert _inkw(atmost=('jack', 'kate'))(jack=True)
        assert _inkw(atmost=('jack', 'kate'))(jack=True, kate=True)

        assert not _inkw(atmost=())(jack=True, kate=True)
        assert not _inkw(atmost=('sawyer', 'kate'))(jack=True, kate=True)
        assert not _inkw(atmost=('jack', 'kate'))(jack=True, kate=True, sawyer=True)
        assert not _inkw(atmost=('jack', 'kate'))(4, 8, jack=True, kate=True, sawyer=True)
    def test_inkw_exactly_dict (self):
        assert _inkw(exactly={})()
        assert _inkw(exactly={})(4, 8)
        assert _inkw(exactly={'jack': 4, 'kate': 8})(jack=True, kate=True)
        assert _inkw(exactly={'jack': 4, 'kate': 8})(4, 8, jack=True, kate=True)

        assert not _inkw(exactly={})(jack=True, kate=True)
        assert not _inkw(exactly={})(4, 8, jack=True, kate=True)
        assert not _inkw(exactly={'jack': 4})(jack=True, kate=True)
        assert not _inkw(exactly={'sawyer': 16, 'kate': 8})(jack=True, kate=True)
        assert not _inkw(exactly={'jack': 4, 'kate': 8})(jack=True, kate=True, sawyer=True)
    def test_inkw_exactly_tuple (self):
        assert _inkw(exactly=())()
        assert _inkw(exactly=())(4, 8)
        assert _inkw(exactly=('jack', 'kate'))(jack=True, kate=True)
        assert _inkw(exactly=('jack', 'kate'))(4, 8, jack=True, kate=True)

        assert not _inkw(exactly=())(jack=True, kate=True)
        assert not _inkw(exactly=())(4, 8, jack=True, kate=True)
        assert not _inkw(exactly=('jack',))(jack=True, kate=True)
        assert not _inkw(exactly=('sawyer', 'kate'))(jack=True, kate=True)
        assert not _inkw(exactly=('jack', 'kate'))(jack=True, kate=True, sawyer=True)
    def test_inkw_atleast_dict (self):
        assert _inkw(atleast={})(jack=True, kate=True)
        assert _inkw(atleast={'jack': 4, 'kate': 8})(jack=True, kate=True)
        assert _inkw(atleast={'jack': 4})(jack=True, kate=True)

        assert not _inkw(atleast={'sawyer': 16, 'kate': 8})(jack=True, kate=True)
 def test_inkw_no_spec (self):
     _inkw()
 def test_inkw_bad_spec_atmost_exactly (self):
     _inkw(atmost={}, exactly={})