|
1 | 1 | module formats_test |
| 2 | + !! Verify that format strings provide the desired formatting |
| 3 | + use formats_m, only : separated_values |
| 4 | + use test_m, only : test_t, test_result_t |
| 5 | + implicit none |
2 | 6 |
|
3 | | - !! author: Damian Rouson |
4 | | - !! |
5 | | - !! summary: verify that format strings provide the desired formatting |
6 | | - use vegetables, only: & |
7 | | - result_t, test_item_t, & ! types |
8 | | - describe, it, assert_equals ! functions |
9 | | - use formats_m, only : separated_values |
10 | | - implicit none |
| 7 | + private |
| 8 | + public :: formats_test_t |
11 | 9 |
|
12 | | - private |
13 | | - public :: test_object |
| 10 | + type, extends(test_t) :: formats_test_t |
| 11 | + contains |
| 12 | + procedure, nopass :: subject |
| 13 | + procedure, nopass :: results |
| 14 | + end type |
14 | 15 |
|
15 | 16 | contains |
16 | 17 |
|
17 | | - function test_object() result(tests) |
18 | | - type(test_item_t) tests |
| 18 | + pure function subject() result(specimen) |
| 19 | + character(len=:), allocatable :: specimen |
| 20 | + specimen = "The csv format" |
| 21 | + end function |
| 22 | + |
| 23 | + pure function results() result(test_results) |
| 24 | + type(test_result_t), allocatable :: test_results(:) |
19 | 25 |
|
20 | | - tests = describe( & |
21 | | - "csv format", & |
22 | | - [it( & |
23 | | - "yields a comma-separated list of real numbers", & |
24 | | - check_csv_reals), & |
25 | | - it( & |
26 | | - "yields a space-separated list of complex numbers", & |
27 | | - check_space_separated_complex), & |
28 | | - it( & |
29 | | - "yields a comma- and space-separated list of character values", & |
30 | | - check_cssv_character), & |
31 | | - it( & |
32 | | - "yields a new-line-separated list of integer numbers", & |
33 | | - check_new_line_separated_integers)]) |
| 26 | + test_results = [ & |
| 27 | + test_result_t("yielding a comma-separated list of real numbers", check_csv_reals()), & |
| 28 | + test_result_t("yielding a space-separated list of complex numbers", check_space_separated_complex()), & |
| 29 | + test_result_t("yielding a comma- and space-separated list of character values", check_csv_character()), & |
| 30 | + test_result_t("yielding a new-line-separated list of integer numbers", check_new_line_separated_integers()) & |
| 31 | + ] |
34 | 32 | end function |
35 | 33 |
|
36 | | - function check_csv_reals() result(result_) |
37 | | - type(result_t) result_ |
| 34 | + pure function check_csv_reals() result(test_passes) |
| 35 | + logical test_passes |
38 | 36 | character(len=*), parameter :: expected_output = "0.00000000,1.00000000,2.00000000" |
39 | 37 | character(len=len(expected_output)) captured_output |
40 | 38 |
|
41 | 39 | write(captured_output, fmt = separated_values(separator=",", mold=[integer::])) [0.,1.,2.] |
42 | | - |
43 | | - result_ = assert_equals(expected_output, captured_output) |
| 40 | + test_passes = expected_output == captured_output |
44 | 41 | end function |
45 | 42 |
|
46 | | - function check_space_separated_complex() result(result_) |
47 | | - type(result_t) result_ |
48 | | - |
| 43 | + pure function check_space_separated_complex() result(test_passes) |
| 44 | + logical test_passes |
49 | 45 | character(len=*), parameter :: expected_output = "(0.00000000,1.00000000) (1.00000000,0.00000000)" |
50 | 46 | character(len=len(expected_output)) captured_output |
51 | 47 |
|
52 | 48 | write(captured_output, fmt = separated_values(separator=" ", mold=[complex::])) [(0.,1.),(1.,0.)] |
53 | | - |
54 | | - result_ = assert_equals(expected_output, captured_output) |
| 49 | + test_passes = expected_output == captured_output |
55 | 50 | end function |
56 | 51 |
|
57 | | - function check_new_line_separated_integers() result(result_) |
58 | | - type(result_t) result_ |
59 | | - |
| 52 | + pure function check_new_line_separated_integers() result(test_passes) |
| 53 | + logical test_passes |
60 | 54 | character(len=*), parameter :: expected_output = ( "0" // new_line("") // "1" //new_line("") // "2") |
61 | 55 | character(len=len(expected_output)) captured_output |
62 | 56 |
|
63 | 57 | write(captured_output, fmt = separated_values(separator=new_line(""), mold=[integer::])) [0,1,2] |
64 | | - |
65 | | - result_ = assert_equals(captured_output, "0" // new_line("") // "1" //new_line("") // "2") |
| 58 | + test_passes = captured_output == "0" // new_line("") // "1" //new_line("") // "2" |
66 | 59 | end function |
67 | 60 |
|
68 | | - function check_cssv_character() result(result_) |
69 | | - type(result_t) result_ |
70 | | - |
| 61 | + pure function check_csv_character() result(test_passes) |
| 62 | + logical test_passes |
71 | 63 | integer, parameter :: num_spaces=3 |
72 | 64 | character(len=*), parameter :: expected_output = "Yodel, Ay, Hee, Hoo!" |
73 | 65 | character(len=len(expected_output)+num_spaces) captured_output |
74 | 66 |
|
75 | 67 | write(captured_output, fmt = separated_values(separator=", ", mold=[integer::])) "Yodel", "Ay", "Hee", "Hoo!" |
76 | | - |
77 | | - result_ = assert_equals(expected_output, captured_output) |
| 68 | + test_passes= expected_output == captured_output |
78 | 69 | end function |
79 | 70 |
|
80 | 71 | end module formats_test |
0 commit comments