idlize

Форк
0
83 строки · 2.2 Кб
1
import { nativeModule } from "@koalaui/arkoala"
2
import { withStringResult } from "@koalaui/interop"
3

4
export const TEST_GROUP_LOG = 1
5
export const CALL_GROUP_LOG = 2
6

7
export let reportTestFailures: boolean = true
8

9
let failedTestsCount = 0
10

11
export function setReportTestFailures(report: boolean) {
12
    reportTestFailures = report
13
}
14

15
export function checkTestFailures() {
16
    if (reportTestFailures && failedTestsCount > 0) {
17
        console.log(`failed tests: ${failedTestsCount}`)
18
        process.exit(1)
19
    }
20
}
21

22
export function startNativeLog(group: number) {
23
    nativeModule()._StartGroupedLog(group)
24
}
25

26
export function stopNativeLog(group: number) {
27
    nativeModule()._StopGroupedLog(group)
28
}
29

30
export function getNativeLog(group: number = TEST_GROUP_LOG): string {
31
    return withStringResult(nativeModule()._GetGroupedLog(group))!
32
}
33

34
export function checkResult(name: string, test: () => void, expected: string) {
35
    startNativeLog(TEST_GROUP_LOG)
36
    test()
37
    stopNativeLog(TEST_GROUP_LOG)
38
    const out = getNativeLog()
39
    // remove out comments like /* some text */
40
    const actual =  out.replace(/\s?\/\*.*?\*\//g, "");
41
    if (reportTestFailures) {
42
        if (actual != expected) {
43
            failedTestsCount++
44
            console.log(`TEST ${name} FAIL:\n  EXPECTED "${expected}"\n  ACTUAL   "${actual}"`)
45
            console.log(`output: ${out}`)
46
        } else {
47
            console.log(`TEST ${name} PASS`)
48
        }
49
    }
50
}
51

52
export function assertTrue(name: string, value: boolean) {
53
    if (!value) {
54
        failedTestsCount++
55
        console.log(`TEST ${name} FAIL:\n  EXPECTED value is not true.`)
56
    } else {
57
        console.log(`TEST ${name} PASS`)
58
    }
59
}
60

61
export function assertEquals(name: string, expected: any, actual: any) {
62
    if (expected != actual ) {
63
        failedTestsCount++
64
        console.log(`TEST ${name} FAIL:\n  EXPECTED "${expected}"\n  ACTUAL   "${actual}"`)
65
    } else {
66
        console.log(`TEST ${name} PASS`)
67
    }
68
}
69

70
export function assertThrows(name: string, fn: () => void) {
71
    let caught = false
72
    try {
73
        fn()
74
    } catch (e) {
75
        caught = true
76
    }
77
    if (!caught) {
78
        failedTestsCount++
79
        console.log(`TEST ${name} FAIL:\n  No exception thrown`)
80
    } else {
81
        console.log(`TEST ${name} PASS`)
82
    }
83
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.