Skip to content

Commit 6beff41

Browse files
committed
Additional tests
1 parent a288a12 commit 6beff41

File tree

3 files changed

+294
-0
lines changed

3 files changed

+294
-0
lines changed

Cql/CoreTests/CqlDateTests.cs

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,112 @@ public void CqlDate_Subtract_Months_From_Year()
2424
Assert.AreEqual(2011, result.Value.Year);
2525
Assert.AreEqual(DateTimePrecision.Year, result.Precision);
2626
}
27+
28+
[TestMethod]
29+
public void Add_Years()
30+
{
31+
var date = new CqlDate(2020, 1, 1);
32+
var quantity = new CqlQuantity(2, "year");
33+
var result = date.Add(quantity);
34+
Assert.AreEqual(new CqlDate(2022, 1, 1), result);
35+
}
36+
37+
[TestMethod]
38+
public void Add_Months()
39+
{
40+
var date = new CqlDate(2020, 1, 31);
41+
var quantity = new CqlQuantity(1, "month");
42+
var result = date.Add(quantity);
43+
Assert.AreEqual(new CqlDate(2020, 2, 29), result); // Leap year
44+
}
45+
46+
[TestMethod]
47+
public void Add_Days()
48+
{
49+
var date = new CqlDate(2020, 2, 27);
50+
var quantity = new CqlQuantity(2, "day");
51+
var result = date.Add(quantity);
52+
Assert.AreEqual(new CqlDate(2020, 2, 29), result);
53+
}
54+
55+
[TestMethod]
56+
public void Subtract_Years()
57+
{
58+
var date = new CqlDate(2020, 1, 1);
59+
var quantity = new CqlQuantity(5, "year");
60+
var result = date.Subtract(quantity);
61+
Assert.AreEqual(new CqlDate(2015, 1, 1), result);
62+
}
63+
64+
[TestMethod]
65+
public void Subtract_Months()
66+
{
67+
var date = new CqlDate(2020, 3, 31);
68+
var quantity = new CqlQuantity(1, "month");
69+
var result = date.Subtract(quantity);
70+
Assert.AreEqual(new CqlDate(2020, 2, 29), result); // Leap year
71+
}
72+
73+
[TestMethod]
74+
public void Subtract_Days()
75+
{
76+
var date = new CqlDate(2020, 3, 1);
77+
var quantity = new CqlQuantity(1, "day");
78+
var result = date.Subtract(quantity);
79+
Assert.AreEqual(new CqlDate(2020, 2, 29), result);
80+
}
81+
82+
[TestMethod]
83+
public void Operator_Addition()
84+
{
85+
var date = new CqlDate(2021, 12, 31);
86+
var quantity = new CqlQuantity(1, "day");
87+
var result = date + quantity;
88+
Assert.AreEqual(new CqlDate(2022, 1, 1), result);
89+
}
90+
91+
[TestMethod]
92+
public void Operator_Subtraction()
93+
{
94+
var date = new CqlDate(2022, 1, 1);
95+
var quantity = new CqlQuantity(1, "day");
96+
var result = date - quantity;
97+
Assert.AreEqual(new CqlDate(2021, 12, 31), result);
98+
}
99+
100+
[TestMethod]
101+
public void Add_NullQuantity_ReturnsNull()
102+
{
103+
var date = new CqlDate(2020, 1, 1);
104+
CqlQuantity? quantity = null;
105+
var result = date.Add(quantity);
106+
Assert.IsNull(result);
107+
}
108+
109+
[TestMethod]
110+
public void Subtract_NullQuantity_ReturnsNull()
111+
{
112+
var date = new CqlDate(2020, 1, 1);
113+
CqlQuantity? quantity = null;
114+
var result = date.Subtract(quantity);
115+
Assert.IsNull(result);
116+
}
117+
118+
[TestMethod]
119+
public void Operator_Addition_NullDate_ReturnsNull()
120+
{
121+
CqlDate? date = null;
122+
var quantity = new CqlQuantity(1, "day");
123+
var result = date + quantity;
124+
Assert.IsNull(result);
125+
}
126+
127+
[TestMethod]
128+
public void Operator_Subtraction_NullDate_ReturnsNull()
129+
{
130+
CqlDate? date = null;
131+
var quantity = new CqlQuantity(1, "day");
132+
var result = date - quantity;
133+
Assert.IsNull(result);
134+
}
27135
}

Cql/CoreTests/CqlDateTimeTests.cs

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,4 +257,92 @@ public void CqlDateTime_WholeCalendarPeriodsBetween_Months()
257257
Assert.AreEqual(16, boundariesBetween);
258258

259259
}
260+
261+
[TestMethod]
262+
public void Add_Years_OperatorAndMethod()
263+
{
264+
var dt = new CqlDateTime(2020, 1, 1, 0, 0, 0, 0, 0, 0);
265+
var quantity = new CqlQuantity(2, "year");
266+
267+
var resultMethod = dt.Add(quantity);
268+
var resultOperator = dt + quantity;
269+
270+
Assert.IsNotNull(resultMethod);
271+
Assert.IsNotNull(resultOperator);
272+
Assert.AreEqual(2022, resultMethod.Value.Year);
273+
Assert.AreEqual(2022, resultOperator.Value.Year);
274+
Assert.AreEqual(dt.Value.Month, resultMethod.Value.Month);
275+
Assert.AreEqual(dt.Value.Day, resultMethod.Value.Day);
276+
}
277+
278+
[TestMethod]
279+
public void Subtract_Years_OperatorAndMethod()
280+
{
281+
var dt = new CqlDateTime(2020, 1, 1, 0, 0, 0, 0, 0, 0);
282+
var quantity = new CqlQuantity(3, "year");
283+
284+
var resultMethod = dt.Subtract(quantity);
285+
var resultOperator = dt - quantity;
286+
287+
Assert.IsNotNull(resultMethod);
288+
Assert.IsNotNull(resultOperator);
289+
Assert.AreEqual(2017, resultMethod.Value.Year);
290+
Assert.AreEqual(2017, resultOperator.Value.Year);
291+
Assert.AreEqual(dt.Value.Month, resultMethod.Value.Month);
292+
Assert.AreEqual(dt.Value.Day, resultMethod.Value.Day);
293+
}
294+
295+
[TestMethod]
296+
public void Add_Months()
297+
{
298+
var dt = new CqlDateTime(2021, 5, 15, 0, 0, 0, 0, 0, 0);
299+
var quantity = new CqlQuantity(7, "month");
300+
301+
var result = dt.Add(quantity);
302+
303+
Assert.IsNotNull(result);
304+
Assert.AreEqual(2021, result.Value.Year);
305+
Assert.AreEqual(12, result.Value.Month);
306+
Assert.AreEqual(15, result.Value.Day);
307+
}
308+
309+
[TestMethod]
310+
public void Subtract_Days()
311+
{
312+
var dt = new CqlDateTime(2021, 1, 10, 0, 0, 0, 0, 0, 0);
313+
var quantity = new CqlQuantity(5, "day");
314+
315+
var result = dt.Subtract(quantity);
316+
317+
Assert.IsNotNull(result);
318+
Assert.AreEqual(2021, result.Value.Year);
319+
Assert.AreEqual(1, result.Value.Month);
320+
Assert.AreEqual(5, result.Value.Day);
321+
}
322+
323+
[TestMethod]
324+
public void Add_NullQuantity_ReturnsNull()
325+
{
326+
var dt = new CqlDateTime(2021, 1, 1, 0, 0, 0, 0, 0, 0);
327+
CqlQuantity? quantity = null;
328+
329+
var result = dt.Add(quantity);
330+
var resultOp = dt + quantity;
331+
332+
Assert.IsNull(result);
333+
Assert.IsNull(resultOp);
334+
}
335+
336+
[TestMethod]
337+
public void Operator_NullDateTime_ReturnsNull()
338+
{
339+
CqlDateTime? dt = null;
340+
var quantity = new CqlQuantity(1, "year");
341+
342+
var resultAdd = dt + quantity;
343+
var resultSub = dt - quantity;
344+
345+
Assert.IsNull(resultAdd);
346+
Assert.IsNull(resultSub);
347+
}
260348
}

Cql/CoreTests/CqlTimeTests.cs

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
/*
2+
* Copyright (c) 2025, Firely, NCQA and contributors
3+
* See the file CONTRIBUTORS for details.
4+
*
5+
* This file is licensed under the BSD 3-Clause license
6+
* available at https://raw.githubusercontent.com/FirelyTeam/firely-cql-sdk/main/LICENSE
7+
*/
8+
9+
#nullable enable
10+
using Hl7.Cql.Primitives;
11+
12+
namespace CoreTests;
13+
14+
[TestClass]
15+
[TestCategory("UnitTest")]
16+
public class CqlTimeTests
17+
{
18+
[TestMethod]
19+
public void AdditionOperator_AddsMinutes()
20+
{
21+
var time = new CqlTime(10, 15, 0, 0, 0, 0);
22+
var quantity = new CqlQuantity(5, "minute");
23+
var result = time + quantity;
24+
Assert.IsNotNull(result);
25+
Assert.AreEqual(10, result.Value.Hour);
26+
Assert.AreEqual(20, result.Value.Minute);
27+
Assert.AreEqual(0, result.Value.Second);
28+
}
29+
30+
[TestMethod]
31+
public void AdditionOperator_AddsHours()
32+
{
33+
var time = new CqlTime(8, 0, 0, 0, 0, 0);
34+
var quantity = new CqlQuantity(2, "hour");
35+
var result = time + quantity;
36+
Assert.IsNotNull(result);
37+
Assert.AreEqual(10, result.Value.Hour);
38+
Assert.AreEqual(0, result.Value.Minute);
39+
}
40+
41+
[TestMethod]
42+
public void SubtractionOperator_SubtractsMinutes()
43+
{
44+
var time = new CqlTime(12, 30, 0, 0, 0, 0);
45+
var quantity = new CqlQuantity(15, "minute");
46+
var result = time - quantity;
47+
Assert.IsNotNull(result);
48+
Assert.AreEqual(12, result.Value.Hour);
49+
Assert.AreEqual(15, result.Value.Minute);
50+
}
51+
52+
[TestMethod]
53+
public void SubtractionOperator_SubtractsHours()
54+
{
55+
var time = new CqlTime(14, 0, 0, 0, 0, 0);
56+
var quantity = new CqlQuantity(3, "hour");
57+
var result = time - quantity;
58+
Assert.IsNotNull(result);
59+
Assert.AreEqual(11, result.Value.Hour);
60+
Assert.AreEqual(0, result.Value.Minute);
61+
}
62+
63+
[TestMethod]
64+
public void AdditionOperator_NullQuantity_ReturnsNull()
65+
{
66+
var time = new CqlTime(10, 0, 0, 0, 0, 0);
67+
CqlQuantity? quantity = null;
68+
var result = time + quantity;
69+
Assert.IsNull(result);
70+
}
71+
72+
[TestMethod]
73+
public void SubtractionOperator_NullQuantity_ReturnsNull()
74+
{
75+
var time = new CqlTime(10, 0, 0, 0, 0, 0);
76+
CqlQuantity? quantity = null;
77+
var result = time - quantity;
78+
Assert.IsNull(result);
79+
}
80+
81+
[TestMethod]
82+
public void AdditionOperator_NullTime_ReturnsNull()
83+
{
84+
CqlTime? time = null;
85+
var quantity = new CqlQuantity(1, "hour");
86+
var result = time + quantity;
87+
Assert.IsNull(result);
88+
}
89+
90+
[TestMethod]
91+
public void SubtractionOperator_NullTime_ReturnsNull()
92+
{
93+
CqlTime? time = null;
94+
var quantity = new CqlQuantity(1, "hour");
95+
var result = time - quantity;
96+
Assert.IsNull(result);
97+
}
98+
}

0 commit comments

Comments
 (0)