microsoft/qdk
Publicmirrored fromhttps://github.com/microsoft/qdkAvailable
library/qtest/src/Util.qs
26lines · modecode
| 1 | // Copyright (c) Microsoft Corporation. All rights reserved. |
| 2 | // Licensed under the MIT License. |
| 3 | |
| 4 | import Std.Arrays.Filtered; |
| 5 | import Std.Diagnostics.Fact; |
| 6 | |
| 7 | struct TestCaseResult { |
| 8 | did_pass : Bool, |
| 9 | message : String, |
| 10 | } |
| 11 | |
| 12 | |
| 13 | function OutputMessage(test_results : TestCaseResult[]) : Unit { |
| 14 | let num_tests = Length(test_results); |
| 15 | let failed_tests = Filtered((item -> not item.did_pass), test_results); |
| 16 | let num_passed = Std.Arrays.Count((item -> item.did_pass), test_results); |
| 17 | let num_failed = Length(failed_tests); |
| 18 | |
| 19 | Fact((num_passed + num_failed) == num_tests, "invariant failed in test harness: passed plus failed should equal total"); |
| 20 | |
| 21 | let test_word = if num_tests == 1 or num_tests == 0 { "test" } else { "tests" }; |
| 22 | Message($"{num_passed} of {num_tests} {test_word} passed. ({num_failed} failed)"); |
| 23 | for failed_test in failed_tests { |
| 24 | Message($"{failed_test.message}"); |
| 25 | } |
| 26 | } |