Skip to content

Commit 009a037

Browse files
authored
Merge pull request #1037 from FirelyTeam/1024-fix-unit-normalization-for-quantity-units-such-as-ucum-and-calendar-date-units
1024 fix unit normalization for quantity units such as ucum and calendar date units
2 parents 2e91a3f + dac543c commit 009a037

31 files changed

+1310
-994
lines changed

Cql/CoreTests/CqlDateTests.cs

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
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.Iso8601;
11+
using Hl7.Cql.Primitives;
12+
13+
namespace CoreTests;
14+
15+
[TestClass]
16+
[TestCategory("UnitTest")]
17+
public class CqlDateTests
18+
{
19+
[TestMethod]
20+
public void Add_Years()
21+
{
22+
var date = new CqlDate(2020, 1, 1);
23+
var quantity = new CqlQuantity(2, "year");
24+
var result = date.Add(quantity);
25+
Assert.AreEqual(new CqlDate(2022, 1, 1), result);
26+
}
27+
28+
[TestMethod]
29+
public void Add_Months()
30+
{
31+
var date = new CqlDate(2020, 1, 31);
32+
var quantity = new CqlQuantity(1, "month");
33+
var result = date.Add(quantity);
34+
Assert.AreEqual(new CqlDate(2020, 2, 29), result); // Leap year
35+
}
36+
37+
[TestMethod]
38+
public void Add_Days()
39+
{
40+
var date = new CqlDate(2020, 2, 27);
41+
var quantity = new CqlQuantity(2, "day");
42+
var result = date.Add(quantity);
43+
Assert.AreEqual(new CqlDate(2020, 2, 29), result);
44+
}
45+
46+
[TestMethod]
47+
public void Subtract_Years()
48+
{
49+
var date = new CqlDate(2020, 1, 1);
50+
var quantity = new CqlQuantity(5, "year");
51+
var result = date.Subtract(quantity);
52+
Assert.AreEqual(new CqlDate(2015, 1, 1), result);
53+
}
54+
55+
[TestMethod]
56+
public void Subtract_Months()
57+
{
58+
var date = new CqlDate(2020, 3, 31);
59+
var quantity = new CqlQuantity(1, "month");
60+
var result = date.Subtract(quantity);
61+
Assert.AreEqual(new CqlDate(2020, 2, 29), result); // Leap year
62+
}
63+
64+
[TestMethod]
65+
public void Subtract_Days()
66+
{
67+
var date = new CqlDate(2020, 3, 1);
68+
var quantity = new CqlQuantity(1, "day");
69+
var result = date.Subtract(quantity);
70+
Assert.AreEqual(new CqlDate(2020, 2, 29), result);
71+
}
72+
73+
[TestMethod]
74+
public void Operator_Addition()
75+
{
76+
var date = new CqlDate(2021, 12, 31);
77+
var quantity = new CqlQuantity(1, "day");
78+
var result = date + quantity;
79+
Assert.AreEqual(new CqlDate(2022, 1, 1), result);
80+
}
81+
82+
[TestMethod]
83+
public void Operator_Subtraction()
84+
{
85+
var date = new CqlDate(2022, 1, 1);
86+
var quantity = new CqlQuantity(1, "day");
87+
var result = date - quantity;
88+
Assert.AreEqual(new CqlDate(2021, 12, 31), result);
89+
}
90+
91+
[TestMethod]
92+
public void Add_NullQuantity_ReturnsNull()
93+
{
94+
var date = new CqlDate(2020, 1, 1);
95+
CqlQuantity? quantity = null;
96+
var result = date.Add(quantity);
97+
Assert.IsNull(result);
98+
}
99+
100+
[TestMethod]
101+
public void Subtract_NullQuantity_ReturnsNull()
102+
{
103+
var date = new CqlDate(2020, 1, 1);
104+
CqlQuantity? quantity = null;
105+
var result = date.Subtract(quantity);
106+
Assert.IsNull(result);
107+
}
108+
109+
[TestMethod]
110+
public void Operator_Addition_NullDate_ReturnsNull()
111+
{
112+
CqlDate? date = null;
113+
var quantity = new CqlQuantity(1, "day");
114+
var result = date + quantity;
115+
Assert.IsNull(result);
116+
}
117+
118+
[TestMethod]
119+
public void Operator_Subtraction_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+
}

0 commit comments

Comments
 (0)