@@ -50,16 +50,67 @@ struct MemoryDataset <: CDM.AbstractDataset
50
50
unlimited:: Vector{String}
51
51
end
52
52
53
- data = rand (- 100 : 100 ,30 ,31 )
54
- mv = MemoryVariable (" data" ,[" lon" ," lat" ], data, OrderedDict {String,Any} (
55
- " units" => " days since 2000-01-01" ))
56
-
57
53
Base. getindex (v:: MemoryVariable ,ij... ) = v. data[ij... ]
58
54
Base. setindex! (v:: MemoryVariable ,data,ij... ) = v. data[ij... ] = data
59
55
CDM. name (v:: MemoryVariable ) = v. name
60
56
CDM. dimnames (v:: MemoryVariable ) = v. dimnames
61
57
Base. size (v:: MemoryVariable ) = size (v. data)
62
58
59
+ import Base
60
+ Base. keys (md:: MemoryDataset ) = keys (md. variables)
61
+ CDM. variable (md:: MemoryDataset ,varname:: AbstractString ) = md. variables[varname]
62
+ Base. getindex (md:: MemoryDataset ,varname:: AbstractString ) = CDM. cfvariable (md,varname)
63
+ CDM. dimnames (md:: MemoryDataset ) = keys (md. dim)
64
+ CDM. dim (md:: MemoryDataset ,name:: AbstractString ) = md. dim[name]
65
+ CDM. attribnames (md:: Union{MemoryDataset,MemoryVariable} ) = keys (md. attrib)
66
+ CDM. attrib (md:: Union{MemoryDataset,MemoryVariable} ,name:: AbstractString ) = md. attrib[name]
67
+
68
+
69
+ for sample_data = ( - 100 : 100 ,
70
+ ' a' :' z' ,
71
+ [" AB" ," CD" ," EF" ],
72
+ [NaN ; 1 : 10 ],
73
+ )
74
+ local io
75
+ local data
76
+ local fill_value, mv, md
77
+
78
+ fill_value = sample_data[1 ]
79
+ data = rand (sample_data[2 : end ],30 ,31 )
80
+
81
+ mv = MemoryVariable (" data" ,[" lon" ," lat" ], data, OrderedDict {String,Any} (
82
+ " _FillValue" => fill_value))
83
+
84
+ @test " lon" in CDM. dimnames (mv)
85
+ @test CDM. name (mv) == " data"
86
+
87
+ md = MemoryDataset (
88
+ OrderedDict {String,Int} (
89
+ " lon" => 30 ,
90
+ " lat" => 31 ),
91
+ OrderedDict {String,MemoryVariable} (
92
+ " data" => mv),
93
+ OrderedDict {String,Any} (),
94
+ String[])
95
+
96
+ md[" data" ][1 ,1 ] = missing
97
+ @test ismissing (md[" data" ][1 ,1 ])
98
+ @test md[" data" ]. var[1 ,1 ] === fill_value
99
+
100
+ md[" data" ][1 : 2 ,1 : 2 ] .= missing
101
+ @test all (ismissing .(md[" data" ][1 : 2 ,1 : 2 ]))
102
+ @test all (md[" data" ]. var[1 : 2 ,1 : 2 ] .=== fill_value)
103
+ end
104
+
105
+
106
+ # time
107
+
108
+ sample_data = - 100 : 100
109
+ data = rand (sample_data,30 ,31 )
110
+ mv = MemoryVariable (" data" ,[" lon" ," lat" ], data, OrderedDict {String,Any} (
111
+ " units" => " days since 2000-01-01" ))
112
+
113
+
63
114
@test " lon" in CDM. dimnames (mv)
64
115
@test CDM. name (mv) == " data"
65
116
@@ -73,25 +124,12 @@ md = MemoryDataset(
73
124
" history" => " lala" ),
74
125
String[])
75
126
76
- import Base
77
- Base. keys (md:: MemoryDataset ) = keys (md. variables)
78
- CDM. variable (md:: MemoryDataset ,varname:: AbstractString ) = md. variables[varname]
79
- Base. getindex (md:: MemoryDataset ,varname:: AbstractString ) = CDM. cfvariable (md,varname)
80
- CDM. dimnames (md:: MemoryDataset ) = keys (md. dim)
81
- CDM. dim (md:: MemoryDataset ,name:: AbstractString ) = md. dim[name]
82
- CDM. attribnames (md:: Union{MemoryDataset,MemoryVariable} ) = keys (md. attrib)
83
- CDM. attrib (md:: Union{MemoryDataset,MemoryVariable} ,name:: AbstractString ) = md. attrib[name]
84
-
85
127
86
128
time_origin = DateTime (2000 ,1 ,1 )
87
129
@test md[" data" ][1 ,1 ] == time_origin + Dates. Millisecond (data[1 ,1 ]* 24 * 60 * 60 * 1000 )
88
130
131
+
89
132
md[" data" ][1 ,2 ] = DateTime (2000 ,2 ,1 )
90
133
@test md[" data" ]. var[1 ,2 ] == Dates. value (md[" data" ][1 ,2 ] - time_origin) ÷ (24 * 60 * 60 * 1000 )
91
134
92
- io = IOBuffer ()
93
- CDM. show (io,md)
94
- @test occursin (" Attributes" ,String (take! (io)))
95
-
96
-
97
135
# close(ds)
0 commit comments