50 lines
1.8 KiB
MonkeyC
50 lines
1.8 KiB
MonkeyC
// Мини-раннер юнит-тестов ядра. Штатный (:test)-harness (Toybox.Test +
|
||
// monkeydo /t) не стартует в связке «симулятор 4.2.2 + девайс-пак из
|
||
// docker-образа» — Unexpected Type Error на старте ЛЮБОГО тестового prg
|
||
// (проверено на минимальном проекте из 15 строк), поэтому тесты гоняет
|
||
// собственный раннер: те же проверки (спека 02), вывод println → консоль
|
||
// симулятора (monkeydo). Файлы в test-source/ — в release-сборку поля
|
||
// (monkey.jungle → source/) не попадают.
|
||
import Toybox.Lang;
|
||
import Toybox.System;
|
||
|
||
class CoreChecks {
|
||
var failed;
|
||
var passed;
|
||
|
||
function initialize() {
|
||
failed = 0;
|
||
passed = 0;
|
||
}
|
||
|
||
function eq(a, b, msg) {
|
||
// «==» для строк — сравнение по ссылке: литерал и собранная
|
||
// строка не равны, строки сверяем через equals
|
||
var okEq = a == b;
|
||
if (!okEq && a instanceof Lang.String && b instanceof Lang.String) {
|
||
okEq = a.equals(b);
|
||
}
|
||
if (okEq) {
|
||
passed += 1;
|
||
} else {
|
||
failed += 1;
|
||
System.println("FAIL: " + msg);
|
||
}
|
||
}
|
||
|
||
// Отдельно для null: eq печатал бы значения (concat с null небезопасен)
|
||
function isNull(v, msg) {
|
||
if (v == null) {
|
||
passed += 1;
|
||
} else {
|
||
failed += 1;
|
||
System.println("FAIL: " + msg);
|
||
}
|
||
}
|
||
|
||
function summary() {
|
||
System.println("RESULT: passed=" + passed + " failed=" + failed);
|
||
return failed;
|
||
}
|
||
}
|