1+ module DataMapTests
2+
3+
4+ open ARCtrl
5+ open ARCtrl.Spreadsheet
6+ open FsSpreadsheet
7+
8+ open TestingUtils
9+ open TestObjects.Spreadsheet .DataMap
10+
11+ let private simpleTable =
12+ testList " simpleTable" [
13+ let wsName = " isa_datamap"
14+ let ws =
15+ initWorksheet wsName
16+ [
17+ Data.appendDataColumn 1
18+ Explication.appendMeanColumn 1
19+ Unit.appendPPMColumn 1
20+ ObjectType.appendFloatColumn 1
21+ Description.appendDescriptionColumn 1
22+ GeneratedBy.appendGeneratedByColumn 1
23+
24+ ]
25+ testCase " Read" ( fun () ->
26+
27+ let table = DataMapTable.tryFromFsWorksheet ws
28+
29+ Expect.isSome table " Table was not created"
30+ let table = table.Value
31+
32+ Expect.equal table.Table.ColumnCount 6 " Wrong number of columns"
33+ Expect.equal table.Table.RowCount 1 " Wrong number of rows"
34+
35+ let expectedHeaders =
36+ [
37+ DataMapAux.dataHeader
38+ DataMapAux.explicationHeader
39+ DataMapAux.unitHeader
40+ DataMapAux.objectTypeHeader
41+ DataMapAux.descriptionHeader
42+ DataMapAux.generatedByHeader
43+ ]
44+ Expect.sequenceEqual table.Headers expectedHeaders " Headers did not match"
45+
46+ let expectedCells =
47+ [
48+ Data.dataValue
49+ Explication.meanValue
50+ Unit.ppmValue
51+ ObjectType.floatValue
52+ Description.descriptionValue
53+ GeneratedBy.generatedByValue
54+ ]
55+ Expect.sequenceEqual ( table.GetRow( 0 )) expectedCells " Cells did not match"
56+ )
57+ testCase " Write" ( fun () ->
58+
59+ let table = DataMapTable.tryFromFsWorksheet ws
60+ Expect.isSome table " Table was not created"
61+ let out = DataMapTable.toFsWorksheet table.Value
62+ Expect.workSheetEqual out ws " Worksheet was not correctly written"
63+
64+ )
65+ ]
66+
67+ let private valuelessTable =
68+ testList " valuelessTable" [
69+ let wsName = " isa_datamap"
70+ let ws =
71+ initWorksheet wsName
72+ [
73+ Data.appendDataColumn 0
74+ Explication.appendMeanColumn 0
75+ Unit.appendPPMColumn 0
76+ ObjectType.appendFloatColumn 0
77+ Description.appendDescriptionColumn 0
78+ GeneratedBy.appendGeneratedByColumn 0
79+ ]
80+ testCase " Read" ( fun () ->
81+
82+ let table = DataMapTable.tryFromFsWorksheet ws
83+
84+ Expect.isSome table " Table was not created"
85+ let table = table.Value
86+
87+ Expect.equal table.Table.ColumnCount 6 " Wrong number of columns"
88+ Expect.equal table.Table.RowCount 0 " Wrong number of rows"
89+
90+ let expectedHeaders =
91+ [
92+ DataMapAux.dataHeader
93+ DataMapAux.explicationHeader
94+ DataMapAux.unitHeader
95+ DataMapAux.objectTypeHeader
96+ DataMapAux.descriptionHeader
97+ DataMapAux.generatedByHeader
98+ ]
99+ Expect.sequenceEqual table.Headers expectedHeaders " Headers did not match"
100+ )
101+ // TODO: What should we do with units of empty columns?
102+ //testCase "Write" (fun () ->
103+
104+ // let table = ArcTable.tryFromFsWorksheet ws
105+ // Expect.isSome table "Table was not created"
106+ // let out = ArcTable.toFsWorksheet table.Value
107+ // Expect.workSheetEqual out ws "Worksheet was not correctly written"
108+
109+ //)
110+ ]
111+
112+ let private emptyTable =
113+ testList " emptyTable" [
114+ let t = DataMap.init()
115+ testCase " Write" ( fun () ->
116+ let sheet = DataMapTable.toFsWorksheet t
117+ Expect.equal " isa_datamap" sheet.Name " Worksheet name did not match"
118+ Expect.equal 0 sheet.Rows.Count " Row count should be 0"
119+ )
120+ testCase " Read" ( fun () ->
121+ let sheet = DataMapTable.toFsWorksheet t
122+ Expect.isNone ( DataMapTable.tryFromFsWorksheet sheet) " Table was not created"
123+ )
124+ ]
125+
126+ let private simpleFile =
127+ testList " simpleFile" [
128+ let wb = new FsWorkbook()
129+ let wsName = " isa_datamap"
130+ let ws =
131+ initWorksheet wsName
132+ [
133+ Data.appendDataColumn 1
134+ Explication.appendMeanColumn 1
135+ Unit.appendPPMColumn 1
136+ ObjectType.appendFloatColumn 1
137+ Description.appendDescriptionColumn 1
138+ GeneratedBy.appendGeneratedByColumn 1
139+
140+ ]
141+ wb.AddWorksheet ws
142+ testCase " Read" ( fun () ->
143+
144+ let table = DataMap.fromFsWorkbook wb
145+
146+ Expect.equal table.Table.ColumnCount 6 " Wrong number of columns"
147+ Expect.equal table.Table.RowCount 1 " Wrong number of rows"
148+
149+ let expectedHeaders =
150+ [
151+ DataMapAux.dataHeader
152+ DataMapAux.explicationHeader
153+ DataMapAux.unitHeader
154+ DataMapAux.objectTypeHeader
155+ DataMapAux.descriptionHeader
156+ DataMapAux.generatedByHeader
157+ ]
158+ Expect.sequenceEqual table.Headers expectedHeaders " Headers did not match"
159+
160+ let expectedCells =
161+ [
162+ Data.dataValue
163+ Explication.meanValue
164+ Unit.ppmValue
165+ ObjectType.floatValue
166+ Description.descriptionValue
167+ GeneratedBy.generatedByValue
168+ ]
169+ Expect.sequenceEqual ( table.GetRow( 0 )) expectedCells " Cells did not match"
170+ )
171+ testCase " Write" ( fun () ->
172+
173+ let table = DataMap.fromFsWorkbook wb
174+
175+ let out = DataMap.toFsWorkbook table
176+
177+ Expect.equal ( out.GetWorksheets() .Count) 1 " Wrong number of worksheets"
178+
179+ let wsOut = out.GetWorksheets().[ 0 ]
180+
181+ Expect.workSheetEqual wsOut ws " Worksheet was not correctly written"
182+
183+ )
184+ ]
185+
186+ let main =
187+ testList " DataMapTableTests" [
188+ simpleTable
189+ valuelessTable
190+ emptyTable
191+ simpleFile
192+ ]
0 commit comments