Wartości magiczne - wartości testowe
Słowa, które człowiek czyta jako tekst, a parser jako wartość logiczną, brak wartości albo liczbę. 12 wartości, każda z tym, co psuje, i z tym, co zamiast tego robi poprawna aplikacja.
Wpisuj je po jednej skrótem AltShiftN
w palecie albo weź wszystkie do skryptu poleceniem nkb emit magic-values.
Słowo no
magic-values/bool-no
no
no
- 2 grafemy
- 2 punkty kodowe
- 2 bajty
- 2 jednostki UTF-16
- Co psuje
- YAML 1.1 i kilka parserów konfiguracji czyta słowo no bez cudzysłowu jako logiczne false - a NO to kod kraju Norwegii.
- Co robi poprawna aplikacja
- Zapisane i zwrócone jako dwuznakowy napis no.
Słowo null
magic-values/word-null
null
null
- 4 grafemy
- 4 punkty kodowe
- 4 bajty
- 4 jednostki UTF-16
- Co psuje
- Serializatory i słabo typowane interfejsy zamieniają ten tekst na brak wartości. Pole wygląda na zapisane, a wraca puste.
- Co robi poprawna aplikacja
- Zapisane i zwrócone jako czteroznakowy napis, odróżnialny od pustego pola.
Słowo true
magic-values/bool-true
true
true
- 4 grafemy
- 4 punkty kodowe
- 4 bajty
- 4 jednostki UTF-16
- Co psuje
- Pole tekstowe ze słowem true gdzieś po drodze staje się wartością logiczną i przestaje wracać w tej samej postaci.
- Co robi poprawna aplikacja
- Zwrócone jako tekst, dokładnie tak, jak zostało wpisane.
Słowo NaN
magic-values/word-nan
NaN
NaN
- 3 grafemy
- 3 punkty kodowe
- 3 bajty
- 3 jednostki UTF-16
- Co psuje
- Parsery liczb je przyjmują, a potem każde porównanie z nim daje fałsz - filtry i sortowanie po cichu gubią wiersz.
- Co robi poprawna aplikacja
- Odrzucone w polu liczbowym, zachowane dosłownie w polu tekstowym.
Słowo Infinity
magic-values/word-infinity
Infinity
Infinity
- 8 grafemów
- 8 punktów kodowych
- 8 bajtów
- 8 jednostek UTF-16
- Co psuje
- Niektóre warstwy przyjmują je jako liczbę, a inne odrzucają, więc ta sama wartość przechodzi walidację różnie na każdym etapie.
- Co robi poprawna aplikacja
- Jeden spójny werdykt w interfejsie, w warstwie usług i w bazie.
Słowo undefined
magic-values/word-undefined
undefined
undefined
- 9 grafemów
- 9 punktów kodowych
- 9 bajtów
- 9 jednostek UTF-16
- Co psuje
- Często jest skutkiem błędu gdzie indziej, więc prawdziwej wartości o tej pisowni nie da się odróżnić od usterki.
- Co robi poprawna aplikacja
- Zapisane i wyświetlane jako zwykły tekst, bez specjalnego traktowania.
Słowo yes
magic-values/bool-yes
yes
yes
- 3 grafemy
- 3 punkty kodowe
- 3 bajty
- 3 jednostki UTF-16
- Co psuje
- Ten sam problem konwersji co przy słowie no, w przeciwną stronę, i tak samo niewidoczny podczas przeglądu.
- Co robi poprawna aplikacja
- Zwrócone jako trzyznakowy napis.
Słowo off
magic-values/bool-off
off
off
- 3 grafemy
- 3 punkty kodowe
- 3 bajty
- 3 jednostki UTF-16
- Co psuje
- Kolejne słowo, które popularne parsery konfiguracji zamieniają na wartość logiczną.
- Co robi poprawna aplikacja
- Zwrócone jako tekst.
Słowo None
magic-values/word-none
None
None
- 4 grafemy
- 4 punkty kodowe
- 4 bajty
- 4 jednostki UTF-16
- Co psuje
- Słowo kluczowe braku wartości w jednym z powszechnie używanych języków. Przechodzi przez interfejsy jako null.
- Co robi poprawna aplikacja
- Zwrócone jako czteroznakowy napis.
Słowo nil
magic-values/word-nil
nil
nil
- 3 grafemy
- 3 punkty kodowe
- 3 bajty
- 3 jednostki UTF-16
- Co psuje
- Słowo kluczowe braku wartości w innym języku. Ta sama awaria, inna warstwa.
- Co robi poprawna aplikacja
- Zwrócone jako tekst.
N/A z ukośnikiem
magic-values/na-slash
N/A
N/A
- 3 grafemy
- 3 punkty kodowe
- 3 bajty
- 3 jednostki UTF-16
- Co psuje
- Zawiera separator, więc psuje też ścieżki, kolumny CSV i wszystko, co dzieli tekst na ukośniku.
- Co robi poprawna aplikacja
- Zapisane i wyświetlane w całości.
Pojedyncza kreska
magic-values/dash-only
-
-
- 1 grafem
- 1 punkt kodowy
- 1 bajt
- 1 jednostka UTF-16
- Co psuje
- Pojedyncza kreska to w formularzach prawdziwa odpowiedź, a w raportach znacznik „brak wartości”. Przy eksporcie oba znaczenia się zderzają.
- Co robi poprawna aplikacja
- Zapisana jako wartość jednoznakowa, odróżnialna od pustego pola.