Merge pull request #378 from mbillow/issue-376-cycle-labels

Add washer/dryer Table_02/Table_03 cycle labels for WF21T6500KV/DV19T8745BV
This commit is contained in:
Marc Billow
2026-08-15 23:26:44 -05:00
committed by GitHub
8 changed files with 494 additions and 63 deletions
@@ -376,7 +376,25 @@
"53": "AI sušení+", "53": "AI sušení+",
"4e": "Automatické sušení", "4e": "Automatické sušení",
"26": "Provětrání", "26": "Provětrání",
"2a": "Hygienické sušení+" "2a": "Hygienické sušení+",
"02": "AI sušení",
"03": "Super Speed",
"05": "Ložní prádlo",
"07": "Jemné prádlo",
"09": "Košile",
"0b": "Péče o prošívané bundy",
"0c": "Outdoor impregnace",
"0e": "Ručníky",
"0f": "Vlna",
"11": "Studený vzduch",
"28": "Vnitřní dezinfekce horkým vzduchem",
"37": "Halenky",
"38": "Žehlení",
"39": "Odvlhčování místnosti",
"3a": "Hygienické sušení",
"3b": "Ložní prádlo/Odstranění prachu",
"3c": "Sportovní oblečení",
"3d": "Džíny"
} }
}, },
"favorite_capacity": { "favorite_capacity": {
@@ -647,11 +665,31 @@
"name": "Cyklus", "name": "Cyklus",
"state": { "state": {
"01": "Normální", "01": "Normální",
"02": "Extra intenzivní",
"03": "Super Eco",
"04": "Rychlé praní", "04": "Rychlé praní",
"06": "XXL prádlo", "05": "Vlna/Spodní prádlo",
"06": "Ložní prádlo",
"07": "Outdoor",
"08": "Máchání+odstřeďování", "08": "Máchání+odstřeďování",
"09": "Čištění bubnu",
"0a": "Ručníky", "0a": "Ručníky",
"0b": "Praní varem",
"0c": "Dětské potřeby",
"0d": "Pouze odstřeďování",
"0e": "Zataženo",
"0f": "Čisté praní",
"10": "Sušicí odstřeďování",
"11": "Letní ložní prádlo",
"12": "Bavlna",
"13": "Černá bavlna",
"14": "Jemné spodní prádlo",
"15": "Sportovní oblečení",
"16": "Halenky",
"17": "Stažený program", "17": "Stažený program",
"18": "Soft Bubble",
"19": "AI praní",
"1a": "Košile",
"1b": "Bavlna", "1b": "Bavlna",
"1c": "Eco 40-60", "1c": "Eco 40-60",
"1d": "Super rychlé", "1d": "Super rychlé",
@@ -676,6 +714,7 @@
"32": "Košile", "32": "Košile",
"33": "Ručníky", "33": "Ručníky",
"34": "Smíšené", "34": "Smíšené",
"35": "Eko bavlna",
"36": "Praní+sušení", "36": "Praní+sušení",
"37": "Sušení vzduchem", "37": "Sušení vzduchem",
"38": "Sušení bavlny", "38": "Sušení bavlny",
@@ -717,8 +756,7 @@
"8f": "Intenzivní studená", "8f": "Intenzivní studená",
"96": "Méně mikrovláken", "96": "Méně mikrovláken",
"a0": "15min rychlé praní", "a0": "15min rychlé praní",
"b0": "Smíšená náplň", "b0": "Smíšená náplň"
"35": "Eko bavlna"
} }
}, },
"washer_dry_level": { "washer_dry_level": {
@@ -376,7 +376,25 @@
"4e": "Selbsttrocknung", "4e": "Selbsttrocknung",
"17": "Super Speed", "17": "Super Speed",
"26": "Frischluft", "26": "Frischluft",
"2a": "Hygienepflege+" "2a": "Hygienepflege+",
"02": "KI-Trocknen",
"03": "Super Speed",
"05": "Bettwäsche",
"07": "Feinwäsche",
"09": "Hemden",
"0b": "Paddingpflege",
"0c": "Outdoor-Imprägnierpflege",
"0e": "Handtücher",
"0f": "Wolle",
"11": "Kaltluft",
"28": "Innenraum-Heißluftdesinfektion",
"37": "Blusen",
"38": "Bügeltrocken",
"39": "Raumentfeuchtung",
"3a": "Hygienepflege",
"3b": "Bettwäsche/Entstauben",
"3c": "Sportkleidung",
"3d": "Jeansstoff"
} }
}, },
"favorite_capacity": { "favorite_capacity": {
@@ -610,10 +628,31 @@
"name": "Programm", "name": "Programm",
"state": { "state": {
"01": "Normal", "01": "Normal",
"02": "Super Intensiv",
"03": "Super Eco",
"04": "Schnellwäsche", "04": "Schnellwäsche",
"06": "XXL-Wäsche", "05": "Wolle/Dessous",
"06": "Bettwäsche",
"07": "Outdoor",
"08": "Spülen + Schleudern", "08": "Spülen + Schleudern",
"09": "Trommelreinigung",
"0a": "Handtücher", "0a": "Handtücher",
"0b": "Kochwäsche",
"0c": "Babypflege",
"0d": "Nur Schleudern",
"0e": "Bewölkter Tag",
"0f": "Reinwäsche",
"10": "Trockenschleudern",
"11": "Sommer-Bettwäsche",
"12": "Baumwolle",
"13": "Schwarze Baumwolle",
"14": "Feine Unterwäsche",
"15": "Sportkleidung",
"16": "Blusen",
"17": "Heruntergeladen",
"18": "Soft Bubble",
"19": "KI-Wäsche",
"1a": "Hemden",
"1b": "Baumwolle", "1b": "Baumwolle",
"1c": "Eco 40-60", "1c": "Eco 40-60",
"1d": "Super Speed", "1d": "Super Speed",
@@ -638,6 +677,7 @@
"32": "Hemden", "32": "Hemden",
"33": "Handtücher", "33": "Handtücher",
"34": "Mischwäsche", "34": "Mischwäsche",
"35": "Eco Baumwolle",
"36": "Waschen + Trocknen", "36": "Waschen + Trocknen",
"37": "Air Wash", "37": "Air Wash",
"38": "Trocknen Baumwolle", "38": "Trocknen Baumwolle",
@@ -652,17 +692,6 @@
"60": "Selbstreinigung+", "60": "Selbstreinigung+",
"65": "Buntwäsche", "65": "Buntwäsche",
"66": "Jeansstoff", "66": "Jeansstoff",
"7c": "Weißwäsche",
"7d": "Bettwäsche/Wasserdicht",
"7e": "Selbstreinigung",
"7f": "Wolle/Feinwäsche",
"86": "Tiefenreinigung",
"87": "Download",
"8f": "Kaltwäsche Intensiv",
"96": "Weniger Mikrofasern",
"a0": "Schnelle Wäsche 15'",
"b0": "Gemischte Beladung",
"17": "Heruntergeladen",
"69": "KI-Wäsche", "69": "KI-Wäsche",
"6a": "Wolle", "6a": "Wolle",
"6b": "Jeansstoff", "6b": "Jeansstoff",
@@ -680,8 +709,17 @@
"77": "Baumwolle", "77": "Baumwolle",
"78": "Spülen + Schleudern", "78": "Spülen + Schleudern",
"79": "Nur Schleudern", "79": "Nur Schleudern",
"7c": "Weißwäsche",
"7d": "Bettwäsche/Wasserdicht",
"7e": "Selbstreinigung",
"7f": "Wolle/Feinwäsche",
"86": "Tiefenreinigung",
"87": "Download",
"88": "Tierpflege", "88": "Tierpflege",
"35": "Eco Baumwolle" "8f": "Kaltwäsche Intensiv",
"96": "Weniger Mikrofasern",
"a0": "Schnelle Wäsche 15'",
"b0": "Gemischte Beladung"
} }
}, },
"washer_dry_level": { "washer_dry_level": {
@@ -376,7 +376,25 @@
"4c": "Air Refresh", "4c": "Air Refresh",
"51": "Eco Cotton", "51": "Eco Cotton",
"53": "AI Dry+", "53": "AI Dry+",
"4e": "Self Dry" "4e": "Self Dry",
"02": "AI Dry",
"03": "Super Speed",
"05": "Bedding",
"07": "Delicates",
"09": "Shirts",
"0b": "Padding Care",
"0c": "Outdoor Water-Repellent Care",
"0e": "Towels",
"0f": "Wool",
"11": "Cool air",
"28": "Interior Hot Air Sanitize",
"37": "Blouses",
"38": "Iron dry",
"39": "Room Dehumidify",
"3a": "Hygiene Care",
"3b": "Bedding/Dust Off",
"3c": "Activewear",
"3d": "Denim"
} }
}, },
"favorite_capacity": { "favorite_capacity": {
@@ -647,11 +665,31 @@
"name": "Cycle", "name": "Cycle",
"state": { "state": {
"01": "Normal", "01": "Normal",
"02": "Extra Heavy Duty",
"03": "Super Eco Wash",
"04": "Quick Wash", "04": "Quick Wash",
"06": "XXL Laundry", "05": "Wool/Lingerie",
"06": "Bedding",
"07": "Outdoor",
"08": "Rinse+Spin", "08": "Rinse+Spin",
"09": "Drum Clean",
"0a": "Towels", "0a": "Towels",
"0b": "Boil Wash",
"0c": "Baby Care",
"0d": "Spin Only",
"0e": "Cloudy Day",
"0f": "Pure Wash",
"10": "Spin Dry",
"11": "Summer Bedding",
"12": "Cottons",
"13": "Black Cottons",
"14": "Delicate Underwear",
"15": "Activewear",
"16": "Blouses",
"17": "Downloaded", "17": "Downloaded",
"18": "Soft Bubble",
"19": "AI Wash",
"1a": "Shirts",
"1b": "Cotton", "1b": "Cotton",
"1c": "Eco 40-60", "1c": "Eco 40-60",
"1d": "Super Speed", "1d": "Super Speed",
@@ -572,7 +572,25 @@
"53": "Secado IA+", "53": "Secado IA+",
"4e": "Autosecado", "4e": "Autosecado",
"26": "Aireación", "26": "Aireación",
"2a": "Cuidado higiénico+" "2a": "Cuidado higiénico+",
"02": "Secado IA",
"03": "Súper velocidad",
"05": "Ropa de cama",
"07": "Delicados",
"09": "Camisas",
"0b": "Cuidado de acolchados",
"0c": "Cuidado hidrófugo para exterior",
"0e": "Toallas",
"0f": "Lana",
"11": "Aire frío",
"28": "Desinfección interior con aire caliente",
"37": "Blusas",
"38": "Planchado fácil",
"39": "Deshumidificación de habitación",
"3a": "Cuidado higiénico",
"3b": "Ropa de cama/Antipolvo",
"3c": "Ropa deportiva",
"3d": "Denim"
} }
}, },
"favorite_capacity": { "favorite_capacity": {
@@ -843,11 +861,31 @@
"name": "Ciclo", "name": "Ciclo",
"state": { "state": {
"01": "Normal", "01": "Normal",
"02": "Servicio Extra Intensivo",
"03": "Super Eco",
"04": "Lavado rápido", "04": "Lavado rápido",
"06": "Colada XXL", "05": "Lana/Lencería",
"06": "Ropa de cama",
"07": "Exterior",
"08": "Aclarar + Centrifugar", "08": "Aclarar + Centrifugar",
"09": "Limpieza de Tambor",
"0a": "Toallas", "0a": "Toallas",
"0b": "Lavado a ebullición",
"0c": "Cuidado del bebé",
"0d": "Solo centrifugar",
"0e": "Día nublado",
"0f": "Lavado puro",
"10": "Secado-centrifugado",
"11": "Ropa de cama de verano",
"12": "Algodón",
"13": "Algodón negro",
"14": "Ropa interior delicada",
"15": "Ropa deportiva",
"16": "Blusas",
"17": "Descargado", "17": "Descargado",
"18": "Burbuja suave",
"19": "Lavado IA",
"1a": "Camisas",
"1b": "Algodón", "1b": "Algodón",
"1c": "Eco 40-60", "1c": "Eco 40-60",
"1d": "Súper velocidad", "1d": "Súper velocidad",
@@ -872,6 +910,7 @@
"32": "Camisas", "32": "Camisas",
"33": "Toallas", "33": "Toallas",
"34": "Mezcla", "34": "Mezcla",
"35": "Algodón E",
"36": "Lavado + Secado", "36": "Lavado + Secado",
"37": "Lavado con aire", "37": "Lavado con aire",
"38": "Secado de algodón", "38": "Secado de algodón",
@@ -886,16 +925,6 @@
"60": "Autolimpieza+", "60": "Autolimpieza+",
"65": "Color", "65": "Color",
"66": "Denim", "66": "Denim",
"7c": "Blancos",
"7d": "Ropa de cama / Impermeable",
"7e": "Autolimpieza",
"7f": "Lana / Delicados",
"86": "Lavado profundo",
"87": "Descarga de Programas",
"8f": "Lavado en frío",
"96": "Menos microfibras",
"a0": "Lavado rápido 15'",
"b0": "Carga mixta",
"69": "Lavado IA", "69": "Lavado IA",
"6a": "Lana", "6a": "Lana",
"6b": "Denim", "6b": "Denim",
@@ -913,8 +942,17 @@
"77": "Algodón", "77": "Algodón",
"78": "Aclarar + Centrifugar", "78": "Aclarar + Centrifugar",
"79": "Solo centrifugar", "79": "Solo centrifugar",
"7c": "Blancos",
"7d": "Ropa de cama / Impermeable",
"7e": "Autolimpieza",
"7f": "Lana / Delicados",
"86": "Lavado profundo",
"87": "Descarga de Programas",
"88": "Cuidado de mascotas", "88": "Cuidado de mascotas",
"35": "Algodón E" "8f": "Lavado en frío",
"96": "Menos microfibras",
"a0": "Lavado rápido 15'",
"b0": "Carga mixta"
} }
}, },
"washer_dry_level": { "washer_dry_level": {
@@ -376,7 +376,25 @@
"53": "Asciugatura AI+", "53": "Asciugatura AI+",
"4e": "Autoasciugatura", "4e": "Autoasciugatura",
"26": "Arieggiatura", "26": "Arieggiatura",
"2a": "Cura igienica+" "2a": "Cura igienica+",
"02": "Asciugatura AI",
"03": "Super Speed",
"05": "Biancheria da letto",
"07": "Delicati",
"09": "Camicie",
"0b": "Cura piumini",
"0c": "Cura idrorepellente outdoor",
"0e": "Asciugamani",
"0f": "Lana",
"11": "Aria fredda",
"28": "Sanificazione interna ad aria calda",
"37": "Camicette",
"38": "Pronto da stirare",
"39": "Deumidificazione ambiente",
"3a": "Cura igienica",
"3b": "Biancheria da letto/Antipolvere",
"3c": "Abbigliamento sportivo",
"3d": "Jeans"
} }
}, },
"favorite_capacity": { "favorite_capacity": {
@@ -647,11 +665,31 @@
"name": "Ciclo", "name": "Ciclo",
"state": { "state": {
"01": "Normale", "01": "Normale",
"02": "Extra Intenso",
"03": "Super Eco",
"04": "Lavaggio rapido", "04": "Lavaggio rapido",
"06": "Bucato XXL", "05": "Lana/Lingerie",
"06": "Biancheria da letto",
"07": "Capi outdoor",
"08": "Risciacquo+Centrifuga", "08": "Risciacquo+Centrifuga",
"09": "Pulizia cestello",
"0a": "Asciugamani", "0a": "Asciugamani",
"0b": "Lavaggio a ebollizione",
"0c": "Bambini",
"0d": "Solo centrifuga",
"0e": "Giornata nuvolosa",
"0f": "Lavaggio puro",
"10": "Asciugatura centrifuga",
"11": "Biancheria da letto estiva",
"12": "Cotone",
"13": "Cotone nero",
"14": "Biancheria intima delicata",
"15": "Abbigliamento sportivo",
"16": "Camicette",
"17": "Scaricato", "17": "Scaricato",
"18": "Soft Bubble",
"19": "Lavaggio AI",
"1a": "Camicie",
"1b": "Cotone", "1b": "Cotone",
"1c": "Eco 40-60", "1c": "Eco 40-60",
"1d": "Super Speed", "1d": "Super Speed",
@@ -676,6 +714,7 @@
"32": "Camicie", "32": "Camicie",
"33": "Asciugamani", "33": "Asciugamani",
"34": "Misti", "34": "Misti",
"35": "Cotone E",
"36": "Lavaggio+Asciugatura", "36": "Lavaggio+Asciugatura",
"37": "Lavaggio ad aria", "37": "Lavaggio ad aria",
"38": "Asciugatura cotone", "38": "Asciugatura cotone",
@@ -690,14 +729,6 @@
"60": "Self Clean+", "60": "Self Clean+",
"65": "Colorati", "65": "Colorati",
"66": "Jeans", "66": "Jeans",
"7c": "Bianchi",
"7d": "Biancheria da letto/Impermeabile",
"7e": "Pulizia cestello",
"7f": "Lana/Delicati",
"86": "Lavaggio profondo",
"87": "Scaricato",
"8f": "Intenso a freddo",
"96": "Riduci microfibre",
"69": "Lavaggio AI", "69": "Lavaggio AI",
"6a": "Lana", "6a": "Lana",
"6b": "Jeans", "6b": "Jeans",
@@ -715,8 +746,15 @@
"77": "Cotone", "77": "Cotone",
"78": "Risciacquo+Centrifuga", "78": "Risciacquo+Centrifuga",
"79": "Solo centrifuga", "79": "Solo centrifuga",
"7c": "Bianchi",
"7d": "Biancheria da letto/Impermeabile",
"7e": "Pulizia cestello",
"7f": "Lana/Delicati",
"86": "Lavaggio profondo",
"87": "Scaricato",
"88": "Cura animali", "88": "Cura animali",
"35": "Cotone E", "8f": "Intenso a freddo",
"96": "Riduci microfibre",
"a0": "Rapido 15'", "a0": "Rapido 15'",
"b0": "Carico misto" "b0": "Carico misto"
} }
@@ -376,7 +376,25 @@
"53": "AI 맞춤건조+", "53": "AI 맞춤건조+",
"4e": "자체 건조", "4e": "자체 건조",
"26": "송풍", "26": "송풍",
"2a": "살균건조+" "2a": "살균건조+",
"02": "AI 맞춤건조",
"03": "쾌속건조",
"05": "이불",
"07": "섬세의류",
"09": "셔츠",
"0b": "패딩케어",
"0c": "아웃도어발수케어",
"0e": "타월",
"0f": "울",
"11": "송풍건조",
"28": "열풍내부살균",
"37": "블라우스",
"38": "다림질건조",
"39": "공간제습",
"3a": "살균건조",
"3b": "이불/먼지털기",
"3c": "피트니스",
"3d": "데님"
} }
}, },
"favorite_capacity": { "favorite_capacity": {
@@ -647,11 +665,31 @@
"name": "코스", "name": "코스",
"state": { "state": {
"01": "표준세탁", "01": "표준세탁",
"02": "초강력세탁",
"03": "초절약세탁",
"04": "쾌속세탁", "04": "쾌속세탁",
"06": "XXL 세탁", "05": "울/란제리",
"06": "이불",
"07": "아웃도어",
"08": "헹굼+탈수", "08": "헹굼+탈수",
"09": "무세제통세척",
"0a": "타월", "0a": "타월",
"0b": "삶음세탁",
"0c": "아기옷",
"0d": "탈수단독",
"0e": "흐린날세탁",
"0f": "청정세탁",
"10": "건조탈수",
"11": "여름이불",
"12": "면의류",
"13": "검은면의류",
"14": "섬세속옷",
"15": "피트니스",
"16": "블라우스",
"17": "다운로드 코스", "17": "다운로드 코스",
"18": "소프트버블",
"19": "AI 맞춤세탁",
"1a": "셔츠",
"1b": "면", "1b": "면",
"1c": "에코 40-60", "1c": "에코 40-60",
"1d": "쾌속세탁", "1d": "쾌속세탁",
@@ -676,6 +714,7 @@
"32": "셔츠", "32": "셔츠",
"33": "타월", "33": "타월",
"34": "혼합", "34": "혼합",
"35": "에코 면",
"36": "세탁+건조", "36": "세탁+건조",
"37": "에어워시", "37": "에어워시",
"38": "면 건조", "38": "면 건조",
@@ -690,16 +729,6 @@
"60": "통세척+", "60": "통세척+",
"65": "컬러 의류", "65": "컬러 의류",
"66": "데님", "66": "데님",
"7c": "흰옷",
"7d": "이불/방수 의류",
"7e": "통세척",
"7f": "울/섬세",
"86": "찌든 때 세탁",
"87": "다운로드",
"8f": "강력 냉수 세탁",
"96": "미세플라스틱저감",
"a0": "15분 쾌속세탁",
"b0": "혼합 세탁",
"69": "AI 맞춤세탁", "69": "AI 맞춤세탁",
"6a": "울", "6a": "울",
"6b": "데님", "6b": "데님",
@@ -717,8 +746,17 @@
"77": "면", "77": "면",
"78": "헹굼+탈수", "78": "헹굼+탈수",
"79": "탈수만", "79": "탈수만",
"7c": "흰옷",
"7d": "이불/방수 의류",
"7e": "통세척",
"7f": "울/섬세",
"86": "찌든 때 세탁",
"87": "다운로드",
"88": "펫케어", "88": "펫케어",
"35": "에코 면" "8f": "강력 냉수 세탁",
"96": "미세플라스틱저감",
"a0": "15분 쾌속세탁",
"b0": "혼합 세탁"
} }
}, },
"washer_dry_level": { "washer_dry_level": {
@@ -376,7 +376,25 @@
"53": "AI drogen+", "53": "AI drogen+",
"4e": "Zelf drogen", "4e": "Zelf drogen",
"26": "Luchtverfrissing", "26": "Luchtverfrissing",
"2a": "Hygiënische verzorging+" "2a": "Hygiënische verzorging+",
"02": "AI drogen",
"03": "Super Speed",
"05": "Beddengoed",
"07": "Fijne was",
"09": "Overhemden",
"0b": "Paddingverzorging",
"0c": "Waterafstotende outdoorverzorging",
"0e": "Handdoeken",
"0f": "Wol",
"11": "Koude lucht",
"28": "Interne desinfectie met hete lucht",
"37": "Blouses",
"38": "Strijkdroog",
"39": "Ruimte ontvochtigen",
"3a": "Hygiënisch drogen",
"3b": "Beddengoed/Stof verwijderen",
"3c": "Sportkleding",
"3d": "Spijkergoed"
} }
}, },
"favorite_capacity": { "favorite_capacity": {
@@ -647,11 +665,31 @@
"name": "Programma", "name": "Programma",
"state": { "state": {
"01": "Normaal", "01": "Normaal",
"02": "Extra intensief",
"03": "Super Eco",
"04": "Snelle was", "04": "Snelle was",
"06": "XXL was", "05": "Wol/Lingerie",
"06": "Beddengoed",
"07": "Outdoor",
"08": "Spoelen+centrifugeren", "08": "Spoelen+centrifugeren",
"09": "Trommel reinigen",
"0a": "Handdoeken", "0a": "Handdoeken",
"0b": "Kookwas",
"0c": "Babyverzorging",
"0d": "Alleen centrifugeren",
"0e": "Bewolkte dag",
"0f": "Zuivere was",
"10": "Droogcentrifugeren",
"11": "Zomer beddengoed",
"12": "Katoen",
"13": "Zwart katoen",
"14": "Fijn ondergoed",
"15": "Sportkleding",
"16": "Blouses",
"17": "Gedownload", "17": "Gedownload",
"18": "Soft Bubble",
"19": "AI Wash",
"1a": "Overhemden",
"1b": "Katoen", "1b": "Katoen",
"1c": "Eco 40-60", "1c": "Eco 40-60",
"1d": "Super Speed", "1d": "Super Speed",
@@ -676,6 +714,7 @@
"32": "Overhemden", "32": "Overhemden",
"33": "Handdoeken", "33": "Handdoeken",
"34": "Gemengd", "34": "Gemengd",
"35": "Eco katoen",
"36": "Wassen+drogen", "36": "Wassen+drogen",
"37": "Air Wash", "37": "Air Wash",
"38": "Katoen drogen", "38": "Katoen drogen",
@@ -717,8 +756,7 @@
"8f": "Intensief koud", "8f": "Intensief koud",
"96": "Minder microvezels", "96": "Minder microvezels",
"a0": "15' Snelle was", "a0": "15' Snelle was",
"b0": "Gemengde was", "b0": "Gemengde was"
"35": "Eco katoen"
} }
}, },
"washer_dry_level": { "washer_dry_level": {
+167 -2
View File
@@ -180,10 +180,14 @@ def test_confirmed_washer_table_02_towels_bedding_are_not_swapped():
def test_confirmed_washer_table_02_missing_course_names(): def test_confirmed_washer_table_02_missing_course_names():
"""Issue #342: 06/08/a0 had no translation and fell back to the raw """Issue #342: 06/08/a0 had no translation and fell back to the raw
device code in the UI; 74 was already translated by the time this device code in the UI; 74 was already translated by the time this
landed and is pinned here only as a "didn't regress" anchor.""" landed and is pinned here only as a "didn't regress" anchor.
06's wording was corrected by issue #376 (originally 'XXL Laundry';
that device's own '이불' report -- the same text as the confirmed
Bedding codes 24/6f -- turned out to be the right one)."""
states = _load("en")["entity"]["select"]["washer_cycle_table_02"]["state"] states = _load("en")["entity"]["select"]["washer_cycle_table_02"]["state"]
assert {code: states[code] for code in ("06", "08", "74", "a0")} == { assert {code: states[code] for code in ("06", "08", "74", "a0")} == {
"06": "XXL Laundry", "06": "Bedding",
"08": "Rinse+Spin", "08": "Rinse+Spin",
"74": "Drum Clean", "74": "Drum Clean",
"a0": "15' Quick Wash", "a0": "15' Quick Wash",
@@ -211,6 +215,167 @@ def test_confirmed_washer_table_02_ww90dg5g34able_course_names():
} }
def test_confirmed_washer_table_02_wf21t6500kv_course_names():
"""Issue #376: WF21T6500KV (DA_WM_A51_20_COMMON) reported Korean labels
for 21 previously-untranslated Table_02 codes.
Several share their Korean text with an already-confirmed code
(cross-checked against translations/ko.json, not guessed), so those
reuse the established label rather than a fresh translation -- checked
in every locale per issue #363's precedent, since a locale that
translated the shared text differently would still pass the
key-topology test alone. That includes '06': its Korean text ('이불')
matches the confirmed Bedding codes 24/6f exactly, which superseded
the wrong 'XXL Laundry' wording #342 had originally given it (see
test_confirmed_washer_table_02_missing_course_names).
"""
english = _load("en")["entity"]["select"]["washer_cycle_table_02"]["state"]
assert {
code: english[code]
for code in (
"02",
"03",
"05",
"06",
"07",
"09",
"0b",
"0c",
"0d",
"0e",
"0f",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"18",
"19",
"1a",
)
} == {
"02": "Extra Heavy Duty",
"03": "Super Eco Wash",
"05": "Wool/Lingerie",
"06": "Bedding",
"07": "Outdoor",
"09": "Drum Clean",
"0b": "Boil Wash",
"0c": "Baby Care",
"0d": "Spin Only",
"0e": "Cloudy Day",
"0f": "Pure Wash",
"10": "Spin Dry",
"11": "Summer Bedding",
"12": "Cottons",
"13": "Black Cottons",
"14": "Delicate Underwear",
"15": "Activewear",
"16": "Blouses",
"18": "Soft Bubble",
"19": "AI Wash",
"1a": "Shirts",
}
# Anchors picked among the code's own duplicate-label siblings by
# whichever this catalog already has translated consistently -- '2b'
# over its "AI 맞춤세탁" twin '69', which nl.json alone translates
# differently ("AI wassen" vs "AI Wash"), an existing inconsistency
# unrelated to this issue and not one this PR resolves.
reused_pairs = (
("06", "24"),
("07", "75"),
("09", "3a"),
("0c", "2e"),
("15", "2f"),
("16", "6c"),
("19", "2b"),
("1a", "32"),
)
for language in _languages():
states = _load(language)["entity"]["select"]["washer_cycle_table_02"]["state"]
for new_code, anchor_code in reused_pairs:
assert states[new_code] == states[anchor_code], (language, new_code, anchor_code)
def test_confirmed_dryer_table_03_dv19t8745bv_course_names():
"""Issue #376: DV19T8745BV (DA_WM_TP1_21_COMMON) reported Korean labels
for 18 previously-untranslated Table_03 codes -- none conflict with an
existing entry. As with the washer table above, codes sharing Korean
text with an already-confirmed code (including two, '3c'/'3d', whose
text matches a washer_cycle_table_02 entry rather than one on this
table) reuse that label instead of a fresh translation, checked in
every locale.
"""
english = _load("en")["entity"]["select"]["dryer_cycle_table_03"]["state"]
assert {
code: english[code]
for code in (
"02",
"03",
"05",
"07",
"09",
"0b",
"0c",
"0e",
"0f",
"11",
"28",
"37",
"38",
"39",
"3a",
"3b",
"3c",
"3d",
)
} == {
"02": "AI Dry",
"03": "Super Speed",
"05": "Bedding",
"07": "Delicates",
"09": "Shirts",
"0b": "Padding Care",
"0c": "Outdoor Water-Repellent Care",
"0e": "Towels",
"0f": "Wool",
"11": "Cool air",
"28": "Interior Hot Air Sanitize",
"37": "Blouses",
"38": "Iron dry",
"39": "Room Dehumidify",
"3a": "Hygiene Care",
"3b": "Bedding/Dust Off",
"3c": "Activewear",
"3d": "Denim",
}
same_table_pairs = (
("02", "29"),
("03", "17"),
("05", "1b"),
("07", "19"),
("09", "1c"),
("0e", "1d"),
("0f", "1a"),
("11", "24"),
("38", "20"),
("3a", "21"),
)
for language in _languages():
d_states = _load(language)["entity"]["select"]["dryer_cycle_table_03"]["state"]
w_states = _load(language)["entity"]["select"]["washer_cycle_table_02"]["state"]
for new_code, anchor_code in same_table_pairs:
assert d_states[new_code] == d_states[anchor_code], (language, new_code, anchor_code)
# Cross-table reuse: same Korean text as a washer_cycle_table_02 code.
assert d_states["37"] == w_states["6c"], language # Blouses
assert d_states["3c"] == w_states["2f"], language # Activewear
assert d_states["3d"] == w_states["66"], language # Denim
def test_reported_washer_standard_courses_all_have_table_02_labels(): def test_reported_washer_standard_courses_all_have_table_02_labels():
"""Every non-personal code in the reported washer's live course list """Every non-personal code in the reported washer's live course list
must resolve through the Table_02 catalog instead of appearing as raw must resolve through the Table_02 catalog instead of appearing as raw