File size: 2,030 Bytes
b81a86b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"""
Unit tests Layer 0 — Tier Classification.
"""
import pytest
from matching_engine.constraints import determine_tier, TIER_1_KOTA_IHK
from matching_engine.models import Tier


class TestTierClassification:
    def test_kota_surabaya_is_tier1(self):
        assert determine_tier("3578") == Tier.HIGH

    def test_kota_malang_is_tier1(self):
        assert determine_tier("3573") == Tier.HIGH

    def test_kota_kediri_is_tier1(self):
        assert determine_tier("3571") == Tier.HIGH

    def test_kota_madiun_is_tier1(self):
        assert determine_tier("3577") == Tier.HIGH

    def test_kota_probolinggo_is_tier1(self):
        assert determine_tier("3574") == Tier.HIGH

    def test_banyuwangi_is_tier1(self):
        assert determine_tier("3510") == Tier.HIGH

    def test_sumenep_is_tier1(self):
        assert determine_tier("3529") == Tier.HIGH

    def test_jember_is_tier1(self):
        assert determine_tier("3509") == Tier.HIGH

    def test_kabupaten_kediri_is_tier2(self):
        # Kabupaten Kediri (3506) berbeda dengan Kota Kediri (3571)
        assert determine_tier("3506") == Tier.MEDIUM

    def test_sidoarjo_is_tier2(self):
        # Sidoarjo bukan kota IHK meskipun IPM tinggi
        assert determine_tier("3515") == Tier.MEDIUM

    def test_sampang_is_tier2(self):
        assert determine_tier("3527") == Tier.MEDIUM

    def test_pacitan_is_tier2(self):
        assert determine_tier("3501") == Tier.MEDIUM

    def test_kota_batu_is_tier2(self):
        # Kota Batu (3579) bukan kota IHK
        assert determine_tier("3579") == Tier.MEDIUM

    def test_unknown_kabupaten_is_tier2(self):
        # Default fallback untuk kab yang tidak dikenali
        assert determine_tier("9999") == Tier.MEDIUM

    def test_tier1_count_is_8(self):
        """8 kota IHK Jawa Timur tepat."""
        assert len(TIER_1_KOTA_IHK) == 8

    def test_tier1_set_membership(self):
        expected = {"3578", "3573", "3571", "3577", "3574", "3510", "3529", "3509"}
        assert TIER_1_KOTA_IHK == expected