public void GivenAQuantitySearchValueWithUnequalLowAndHighValues_WhenGenerated_ThenCorrectJObjectShouldBeCreated() { const string system = "system"; const string code = "code"; const decimal low = 3.0m; const decimal high = 5.0m; var value = new QuantitySearchValue( system, code, low, high); var expectedValues = new[] { CreateTuple(SystemName, system), CreateTuple(CodeName, code), CreateTuple("lq", low), CreateTuple("hq", high), }; TestAndValidateOutput( "quantity", value, expectedValues); }
public void GivenAValidString_WhenParsed_ThenCorrectSearchValueShouldBeReturned(string s, string expectedSystem, string expectedCode, decimal expectedQuantity) { QuantitySearchValue value = QuantitySearchValue.Parse(s); Assert.NotNull(value); Assert.Equal(expectedSystem, value.System); Assert.Equal(expectedCode, value.Code); Assert.Equal(expectedQuantity, value.Quantity); }
public void GivenAValue_WhenInitialized_ThenAnySystemAndCodeShouldBeAllowed(string system, string code) { _builder.System = system; _builder.Code = code; QuantitySearchValue value = _builder.ToQuantitySearchValue(); Assert.Equal(system, value.System); Assert.Equal(code, value.Code); }
public void GivenASearchValue_WhenToStringIsCalled_ThenCorrectStringShouldBeReturned(decimal quantity, string system, string code, string expected) { _builder.Value = quantity; _builder.System = system; _builder.Code = code; QuantitySearchValue value = _builder.ToQuantitySearchValue(); Assert.Equal(expected, value.ToString()); }
public void GivenAStringWithTrailingZero_WhenParsed_ThenTrailingZeroShouldBePreserved() { string expected = "0.010|system|code"; QuantitySearchValue value = QuantitySearchValue.Parse(expected); Assert.NotNull(value); Assert.Equal("system", value.System); Assert.Equal("code", value.Code); Assert.Equal(0.010m, value.Quantity); Assert.Equal(expected, value.ToString()); }
void ISearchValueVisitor.Visit(QuantitySearchValue quantity) { AddPropertyIfNotNull(SearchValueConstants.SystemName, quantity.System); AddPropertyIfNotNull(SearchValueConstants.CodeName, quantity.Code); if (quantity.Low == quantity.High) { AddProperty(SearchValueConstants.QuantityName, quantity.Low); } AddProperty(SearchValueConstants.LowQuantityName, quantity.Low); AddProperty(SearchValueConstants.HighQuantityName, quantity.High); }
public void GivenAQuantitySearchValue_WhenGenerated_ThenCorrectJObjectShouldBeCreated() { const string system = "system"; const string code = "code"; const decimal quantity = 3.0m; var value = new QuantitySearchValue( system, code, quantity); var expectedValues = new[] { CreateTuple(SystemName, system), CreateTuple(CodeName, code), CreateTuple("q", quantity), }; TestAndValidateOutput( "quantity", value, expectedValues); }
void ISearchValueVisitor.Visit(QuantitySearchValue quantity) { EnsureArg.IsNotNull(quantity, nameof(quantity)); if (_modifier != null) { ThrowModifierNotSupported(); } var expressions = new List <Expression>(3); // Based on spec http://hl7.org/fhir/STU3/search.html#quantity, // The system is handled differently in quantity than token. if (!string.IsNullOrWhiteSpace(quantity.System)) { expressions.Add( Expression.StringEquals(FieldName.QuantitySystem, _componentIndex, quantity.System, false)); } if (!string.IsNullOrWhiteSpace(quantity.Code)) { expressions.Add( Expression.StringEquals(FieldName.QuantityCode, _componentIndex, quantity.Code, false)); } Debug.Assert(quantity.Low.HasValue && quantity.Low == quantity.High, "quantity low and high should be the same and not null"); expressions.Add(GenerateNumberExpression(FieldName.Quantity, quantity.Low.Value)); if (expressions.Count == 1) { _outputExpression = expressions[0]; } else { _outputExpression = Expression.And(expressions.ToArray()); } }
void ISearchValueVisitor.Visit(QuantitySearchValue quantity) { AddPropertyIfNotNull(SearchValueConstants.SystemName, quantity.System); AddPropertyIfNotNull(SearchValueConstants.CodeName, quantity.Code); AddProperty(SearchValueConstants.QuantityName, quantity.Quantity); }
public void GivenAStringContainingMoreThanTwoTokenSeparators_WhenParsing_ThenExceptionShouldBeThrown() { Assert.Throws <FormatException>(() => QuantitySearchValue.Parse(@"50|sys\|tem|co|de|")); }
public void GivenAnInvalidNumber_WhenParsing_ThenExceptionShouldBeThrown(string s) { Assert.Throws <FormatException>(() => QuantitySearchValue.Parse(s)); }
public void GivenASearchValue_WhenIsValidCompositeComponentIsCalled_ThenTrueShouldBeReturned() { var value = new QuantitySearchValue("system", "code", 1); Assert.True(value.IsValidAsCompositeComponent); }
public void Visit(QuantitySearchValue quantity) { }