from types import SimpleNamespace
import unittest
from model_tooling.reference import unresolved_missing


class ReferenceLoadGateTest(unittest.TestCase):
    def test_only_empty_deterministic_mask_is_allowed(self):
        model = SimpleNamespace(named_buffers=lambda: [('_kp_active_mask', SimpleNamespace(numel=lambda: 0))])
        self.assertEqual([], unresolved_missing(model, ['_kp_active_mask']))
        self.assertEqual(['class_embed.weight'], unresolved_missing(model, ['class_embed.weight']))

    def test_nonempty_or_missing_buffer_is_rejected(self):
        model = SimpleNamespace(named_buffers=lambda: [('_kp_active_mask', SimpleNamespace(numel=lambda: 17))])
        self.assertEqual(['_kp_active_mask'], unresolved_missing(model, ['_kp_active_mask']))
        self.assertEqual(['_kp_active_mask'], unresolved_missing(SimpleNamespace(named_buffers=lambda: []), ['_kp_active_mask']))
