1
1
"""
2
2
Additional computational tests for MERA.jl
3
- Tests that actually execute code paths to significantly increase coverage
3
+ Tests that actually execute MERA code paths to significantly increase coverage
4
4
"""
5
5
6
6
using Mera, Test, Statistics, Dates
7
7
8
8
function run_computational_tests ()
9
9
@testset " Computational Coverage Tests" begin
10
10
11
- @testset " Mathematical Operations " begin
12
- # Test humanize function for memory formatting (this version doesn't need scale )
11
+ @testset " MERA Utility Functions " begin
12
+ # Test MERA's humanize function ( memory formatting)
13
13
test_values = [100.0 , 1024.0 , 1048576.0 , 1073741824.0 ]
14
14
for val in test_values
15
15
@test_nowarn humanize (val, 2 , " memory" )
16
16
end
17
17
18
- # Test basic math and utility functions
18
+ # Test MERA unit functions
19
19
@test_nowarn getunit (nothing , :length , [:x ], [:kpc ], uname= true )
20
+ @test_nowarn getunit (nothing , :mass , [:rho ], [:Msun_pc3 ], uname= true )
21
+ @test_nowarn getunit (nothing , :time , [:age ], [:Myr ], uname= true )
20
22
end
21
23
22
- @testset " Data Structure Creation" begin
23
- # Test data structure operations
24
- @test_nowarn typeof (ClumpDataType)
25
- @test_nowarn typeof (GravDataType)
26
- @test_nowarn typeof (PartDataType)
24
+ @testset " MERA Data Structures and Types" begin
25
+ # Test MERA type creation and constructors
26
+ @test_nowarn Mera. ScalesType001 ()
27
+ @test_nowarn Mera. PhysicalUnitsType001 ()
28
+ @test_nowarn Mera. InfoType ()
29
+ @test_nowarn Mera. HydroDataType ()
30
+ @test_nowarn Mera. GravDataType ()
31
+ @test_nowarn Mera. PartDataType ()
32
+ @test_nowarn Mera. ClumpDataType ()
33
+
34
+ # Test MERA constants creation
35
+ @test_nowarn Mera. createconstants ()
36
+ constants = Mera. createconstants ()
37
+ @test_nowarn constants. Msol
38
+ @test_nowarn constants. kpc
39
+ @test_nowarn constants. G
27
40
end
28
41
29
- @testset " Scales and Units" begin
30
- # Test scale calculations and unit conversions that execute actual code
31
- @test_nowarn getunit (nothing , :length , [:x ], [:kpc ], uname= true )
32
- @test_nowarn getunit (nothing , :mass , [:rho ], [:Msun_pc3 ], uname= true )
33
- @test_nowarn getunit (nothing , :time , [:age ], [:Myr ], uname= true )
42
+ @testset " MERA Scale and Unit Calculations" begin
43
+ # Test MERA scale creation functions
44
+ unit_l = 3.086e21 # kpc in cm
45
+ unit_d = 1e-24 # g/cm³
46
+ unit_t = 3.156e13 # Myr in s
47
+ unit_m = unit_d * unit_l^ 3
48
+ constants = Mera. createconstants ()
34
49
35
- # Test memory formatting which works without scale objects
36
- @test_nowarn humanize (500000.0 , 3 , " memory" )
50
+ @test_nowarn Mera. createscales (unit_l, unit_d, unit_t, unit_m, constants)
51
+ scales = Mera. createscales (unit_l, unit_d, unit_t, unit_m, constants)
52
+
53
+ # Test scale field access
54
+ @test_nowarn scales. kpc
55
+ @test_nowarn scales. Msun
56
+ @test_nowarn scales. km_s
57
+ @test_nowarn scales. g_cm3
58
+
59
+ # Test MERA humanize with scales (only memory version works reliably)
37
60
@test_nowarn humanize (1024.0 , 2 , " memory" )
38
- @test_nowarn humanize (1048576.0 , 1 , " memory" )
61
+ @test_nowarn humanize (1048576.0 , 2 , " memory" )
39
62
end
40
63
41
- @testset " Array and Statistical Operations" begin
42
- # Test array operations that execute code
43
- test_array = [1.0 , 2.0 , 3.0 , 4.0 , 5.0 ]
44
- @test_nowarn sum (test_array)
45
- @test_nowarn mean (test_array)
46
- @test_nowarn std (test_array)
47
- @test_nowarn maximum (test_array)
48
- @test_nowarn minimum (test_array)
49
- @test_nowarn length (test_array)
50
- @test_nowarn size (test_array)
51
- @test_nowarn eltype (test_array)
52
- end
53
-
54
- @testset " String and Path Operations" begin
55
- # Test string operations that don't rely on external files
56
- @test_nowarn replace (" test_string" , " test" => " demo" )
57
- @test_nowarn split (" path/to/file" , " /" )
58
- @test_nowarn join ([" a" , " b" , " c" ], " /" )
59
- @test_nowarn lowercase (" TEST" )
60
- @test_nowarn uppercase (" test" )
61
- @test_nowarn strip (" test " )
62
-
63
- # Test path operations that work with existing directories
64
- @test_nowarn pwd ()
65
- @test_nowarn homedir ()
64
+ @testset " MERA Configuration and Settings" begin
65
+ # Test MERA configuration functions
66
+ @test_nowarn verbose_mode
67
+ @test_nowarn showprogress_mode
68
+ @test_nowarn verbose (false )
69
+ @test_nowarn showprogress (false )
70
+ @test_nowarn verbose (true )
71
+ @test_nowarn showprogress (true )
72
+ @test_nowarn verbose ()
73
+ @test_nowarn showprogress ()
66
74
end
67
75
68
- @testset " Performance and Memory" begin
69
- # Test memory utilities that execute actual code
76
+ @testset " MERA Performance and Memory" begin
77
+ # Test MERA's memory and performance utilities
70
78
test_values = [100 , 1000 , 1000000 , 1000000000 ]
71
79
for val in test_values
72
80
result = humanize (Float64 (val), 2 , " memory" )
@@ -76,73 +84,76 @@ function run_computational_tests()
76
84
println (" Memory used: $(result[1 ]) $(result[2 ]) " )
77
85
end
78
86
79
- # Test time operations
80
- @test_nowarn now ()
87
+ # Test MERA time functions
81
88
@test_nowarn printtime (" test_operation" , false )
82
89
83
- # Test performance monitoring with more specific function calls
84
- @test_nowarn typeof ( now () )
85
- @test_nowarn string ( now () )
86
- @test_nowarn Dates . format ( now (), " yyyy-mm-dd HH:MM:SS " )
90
+ # Test MERA cache and memory management
91
+ @test_nowarn show_mera_cache_stats ( )
92
+ @test_nowarn clear_mera_cache! ( )
93
+ @test_nowarn show_mera_cache_stats ( )
87
94
end
88
95
89
- @testset " Configuration and Settings" begin
90
- # Test configuration operations that actually exist
91
- @test_nowarn verbose_mode
92
- @test_nowarn showprogress_mode
93
- @test_nowarn verbose (false )
94
- @test_nowarn showprogress (false )
96
+ @testset " MERA IO and Configuration" begin
97
+ # Test MERA IO configuration
98
+ @test_nowarn configure_mera_io (show_config= false )
99
+
100
+ # Test MERA threading info
101
+ @test_nowarn show_threading_info ()
102
+ end
103
+
104
+ @testset " MERA Field and View Functions" begin
105
+ # Test MERA viewfields functions with actual types
106
+ constants = Mera. createconstants ()
107
+ @test_nowarn viewfields (constants)
108
+
109
+ scales = Mera. ScalesType001 ()
110
+ scales. kpc = 1.0
111
+ @test_nowarn viewfields (scales)
112
+
113
+ # Test MERA viewmodule with proper argument
114
+ @test_nowarn viewmodule (Mera)
95
115
end
96
116
97
- @testset " Type Checking and Validation" begin
98
- # Test type checking functions
99
- @test_nowarn typeof (1 )
100
- @test_nowarn typeof (1.0 )
101
- @test_nowarn typeof (" string" )
102
- @test_nowarn typeof ([1 , 2 , 3 ])
117
+ @testset " MERA Mathematical Utilities" begin
118
+ # Test MERA's internal mathematical functions
119
+ test_data = [1.0 , 4.0 , 9.0 , 16.0 , 25.0 ]
120
+
121
+ # Test MERA utility functions that process arrays
122
+ @test_nowarn usedmemory (test_data)
123
+
124
+ # Test MERA's statistical utilities if they exist
125
+ @test_nowarn typeof (test_data)
126
+
127
+ # Test MERA path creation with proper arguments
128
+ @test_nowarn createpath (300 , " test_path" )
103
129
end
104
130
105
- @testset " Error Handling Paths " begin
106
- # Test error handling that doesn't actually throw errors
131
+ @testset " MERA Error Handling and Validation " begin
132
+ # Test MERA's error handling without actually throwing errors
107
133
@test_nowarn try ; error (" test" ); catch ; nothing ; end
108
134
@test_nowarn try ; throw (BoundsError ()); catch ; nothing ; end
109
135
@test_nowarn try ; throw (ArgumentError (" test" )); catch ; nothing ; end
110
- @test_nowarn try ; throw (DomainError ()); catch ; nothing ; end
111
- @test_nowarn try ; throw (OverflowError ()); catch ; nothing ; end
112
- @test_nowarn try ; throw (UndefVarError (:test )); catch ; nothing ; end
113
- @test_nowarn try ; throw (MethodError (sum, ())); catch ; nothing ; end
114
- @test_nowarn try ; throw (LoadError (" test" , 1 , ErrorException (" test" ))); catch ; nothing ; end
115
- @test_nowarn try ; throw (InterruptException ()); catch ; nothing ; end
116
- end
117
-
118
- @testset " Macro System" begin
119
- # Test macro system without complex operations
120
- @test_nowarn @elapsed (1 + 1 )
121
- @test_nowarn @time (1 + 1 )
122
- @test_nowarn @isdefined (sum)
123
- end
124
-
125
- @testset " Cache and Memory Management" begin
126
- # Test cache operations that actually exist
127
- @test_nowarn show_mera_cache_stats ()
128
- @test_nowarn clear_mera_cache! ()
129
- @test_nowarn show_mera_cache_stats () # Show again after clearing
130
136
end
131
137
132
- @testset " IO and Configuration State" begin
133
- # Test IO configuration functions that exist
134
- @test_nowarn configure_mera_io (show_config= false )
138
+ @testset " MERA Unit System Integration" begin
139
+ # Test MERA's complete unit system
140
+ @test_nowarn getunit (nothing , :velocity , [:vx ], [:km_s ], uname= true )
141
+ @test_nowarn getunit (nothing , :density , [:rho ], [:g_cm3 ], uname= true )
142
+ @test_nowarn getunit (nothing , :energy , [:ekin ], [:erg ], uname= true )
143
+ @test_nowarn getunit (nothing , :pressure , [:p ], [:Ba ], uname= true )
144
+ @test_nowarn getunit (nothing , :temperature , [:T ], [:K ], uname= true )
135
145
end
136
146
137
- @testset " Threading and Performance" begin
138
- # Test threading information functions that exist
139
- @test_nowarn show_threading_info ()
147
+ @testset " MERA Advanced Utilities" begin
148
+ # Test more advanced MERA utilities
149
+ @test_nowarn typeof (Mera. ScalesType001 ())
150
+ @test_nowarn typeof (Mera. PhysicalUnitsType001 ())
151
+
152
+ # Test MERA notification system
153
+ @test_nowarn notifyme ()
140
154
141
- # Test thread-safe operations
142
- @test_nowarn Threads. nthreads ()
143
- @test_nowarn Threads. threadid ()
144
- @test_nowarn Base. Sys. CPU_THREADS
145
- @test_nowarn length (Sys. cpu_info ())
155
+ # Test MERA bell function
156
+ @test_nowarn bell ()
146
157
end
147
158
end
148
159
end
0 commit comments