public void ChemistryFileDataConstructorTest()
        {
            var chemistryFileData = new ChemistryFileData("test sample code",
                                                         "test original chemistry name",
                                                         "test chem code",
                                                         "test prefix", 
                                                         1.1,
                                                         "test result unit",
                                                         "Total",
                                                         "test result type",
                                                         "test method type",
                                                         "test method name",
                                                         new DateTime(2014, 1, 2),
                                                         new DateTime(2014, 2, 3),
                                                         2.2,
                                                         "%",
                                                         "good data",
                                                         "Good",
                                                         3.3,
                                                         4.4);

            Assert.NotNull(chemistryFileData);
            Assert.AreEqual("test sample code", chemistryFileData.SampleCode);
            Assert.AreEqual("test original chemistry name", chemistryFileData.OriginalChemName);
            Assert.AreEqual("test chem code", chemistryFileData.ChemCode);
            Assert.AreEqual("test prefix", chemistryFileData.Prefix);
            Assert.AreEqual(1.1, chemistryFileData.Result);
            Assert.AreEqual("test result unit", chemistryFileData.ResultUnit);
            Assert.AreEqual("Total", chemistryFileData.TotalOrFiltered);
            Assert.AreEqual("test result type", chemistryFileData.ResultType);
            Assert.AreEqual("test method type", chemistryFileData.MethodType);
            Assert.AreEqual("test method name", chemistryFileData.MethodName);
            Assert.AreEqual(new DateTime(2014, 1, 2), chemistryFileData.ExtractionDate);
            Assert.AreEqual(new DateTime(2014, 2, 3), chemistryFileData.AnalysedDate);
            Assert.AreEqual(2.2, chemistryFileData.EQL);
            Assert.AreEqual("%", chemistryFileData.EQLUnits);
            Assert.AreEqual("good data", chemistryFileData.Comments);
            Assert.AreEqual("Good", chemistryFileData.LabQualifier);
            Assert.AreEqual(3.3, chemistryFileData.UCL);
            Assert.AreEqual(4.4, chemistryFileData.LCL);
        }
        private static ChemistryFileData MapChemistryFileData(Hatfield.EnviroData.Core.Action action, Result result, MeasurementResultValue measurementResultValue)
        {
            var chemistryFileData = new ChemistryFileData();

            chemistryFileData.ExtractionDate = action.BeginDateTime;
            chemistryFileData.AnalysedDate = action.EndDateTime.HasValue ? action.EndDateTime.Value : DateTime.MinValue;
            chemistryFileData.Result = measurementResultValue.DataValue;
            chemistryFileData.ResultUnit = result.MeasurementResult.Unit.UnitsName;
            chemistryFileData.OriginalChemName = result.Variable.VariableDefinition;
            chemistryFileData.ChemCode = result.Variable.VariableCode;
            chemistryFileData.MethodName = action.Method.MethodName;
            chemistryFileData.MethodType = action.Method.MethodDescription;

            var propertyValueDictionary = result.ResultExtensionPropertyValues.ToDictionary(x => x.ExtensionProperty.PropertyName, x => x.PropertyValue);

            chemistryFileData.SampleCode = propertyValueDictionary.ContainsKey(ESDATChemistryConstants.ResultExtensionPropertyValueKeySampleCode) ?
                                            propertyValueDictionary[ESDATChemistryConstants.ResultExtensionPropertyValueKeySampleCode] :
                                            string.Empty;

            chemistryFileData.Prefix = propertyValueDictionary.ContainsKey(ESDATChemistryConstants.ResultExtensionPropertyValueKeyPrefix) ?
                                            propertyValueDictionary[ESDATChemistryConstants.ResultExtensionPropertyValueKeyPrefix] :
                                            string.Empty;

            chemistryFileData.TotalOrFiltered = propertyValueDictionary.ContainsKey(ESDATChemistryConstants.ResultExtensionPropertyValueKeyTotalOrFiltered) ?
                                                    propertyValueDictionary[ESDATChemistryConstants.ResultExtensionPropertyValueKeyTotalOrFiltered] :
                                                    string.Empty;

            chemistryFileData.ResultType = propertyValueDictionary.ContainsKey(ESDATChemistryConstants.ResultExtensionPropertyValueKeyResultType) ?
                                                propertyValueDictionary[ESDATChemistryConstants.ResultExtensionPropertyValueKeyResultType] :
                                                string.Empty;

            chemistryFileData.EQL = propertyValueDictionary.ContainsKey(ESDATChemistryConstants.ResultExtensionPropertyValueKeyEQL) ?
                                        MappingHelper.ToNullableDouble(propertyValueDictionary[ESDATChemistryConstants.ResultExtensionPropertyValueKeyEQL]) :
                                        null;

            chemistryFileData.EQLUnits = propertyValueDictionary.ContainsKey(ESDATChemistryConstants.ResultExtensionPropertyValueKeyEQLUnits) ?
                                            propertyValueDictionary[ESDATChemistryConstants.ResultExtensionPropertyValueKeyEQLUnits] :
                                            string.Empty;

            chemistryFileData.Comments = propertyValueDictionary.ContainsKey(ESDATChemistryConstants.ResultExtensionPropertyValueKeyComments) ? propertyValueDictionary[ESDATChemistryConstants.ResultExtensionPropertyValueKeyComments] : string.Empty;
            chemistryFileData.UCL = propertyValueDictionary.ContainsKey(ESDATChemistryConstants.ResultExtensionPropertyValueKeyUCL) ? MappingHelper.ToNullableDouble(propertyValueDictionary[ESDATChemistryConstants.ResultExtensionPropertyValueKeyUCL]) : null;
            chemistryFileData.LCL = propertyValueDictionary.ContainsKey(ESDATChemistryConstants.ResultExtensionPropertyValueKeyLCL) ? MappingHelper.ToNullableDouble(propertyValueDictionary[ESDATChemistryConstants.ResultExtensionPropertyValueKeyLCL]) : null;

            return chemistryFileData;
        }