/* FormatterTest.cs * part of zaaReloaded2 * * Copyright 2015-2018 Daniel Kraus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using NUnit.Framework; using f = zaaReloaded2.Formatter; using zaaReloaded2.LabModel; using zaaReloaded2.Importer.ZaaImporter; using zaaReloaded2.Controller.Elements; using Microsoft.Office.Interop.Word; using System.IO; namespace Tests.Formatter { [TestFixture] class FormatterTest { Document _document; f.Formatter _formatter; [SetUp] public void SetUp() { _document = new Document(); ZaaImporter importer = TestHelpers.ZaaImporterFromResource(); _formatter = new f.Formatter(_document); _formatter.Laboratory = importer.Laboratory; } [TearDown] public void TearDown() { ((_Document)_document).Close(WdSaveOptions.wdDoNotSaveChanges); } [Test] public void FormatLaboratory() { _formatter.Settings.Elements.Add(new Items("Klinische Chemie: Na, K, Cl")); _formatter.Run(); Assert.AreEqual( GetResourceText("Tests.Formatter.FormatterTest-all.txt"), _document.Range().Text); } [Test] public void SelectEachDay() { _formatter.Settings.Elements.Add( new SelectEachDay( new Items("Klinische Chemie: Na, K, Cl")) ); _formatter.Run(); Assert.AreEqual( GetResourceText("Tests.Formatter.FormatterTest-eachday.txt"), _document.Range().Text); } [Test] public void SelectFirstDay() { _formatter.Settings.Elements.Add( new SelectFirstDay( new Items("Klinische Chemie: Na, K, Cl")) ); _formatter.Run(); Assert.AreEqual( GetResourceText("Tests.Formatter.FormatterTest-firstday.txt"), _document.Range().Text); } [Test] public void SelectLastDay() { _formatter.Settings.Elements.Add( new SelectLastDay( new Items("Klinische Chemie: Na, K, Cl")) ); _formatter.Run(); Assert.AreEqual( GetResourceText("Tests.Formatter.FormatterTest-lastday.txt"), _document.Range().Text); } [Test] public void FormatSpecialItems() { ZaaImporter importer = new ZaaImporter(); importer.Import( "Klinische Chemie: glomerul. Filtrationsr. CKD-EP: 36 ml/min /1,73qm; " + "Sammelmenge (U): 12300 ml; " ); Document document = new Document(); f.Formatter formatter = new f.Formatter(document); formatter.Laboratory = importer.Laboratory; formatter.Settings = new zaaReloaded2.Controller.Settings( new List() { new Items("*") } ); formatter.Run(); Assert.AreEqual( "eGFR (CKD-EPI) 36 ml/min/1,73 m², SU-Volumen 12300 ml\r\r", document.Range().Text); } [Test] public void FormatCyclosporine() { ZaaImporter importer = new ZaaImporter(); importer.Import( "(17.09.2015-201810:44:00) Cyclosporin-A vor Gabe: 130 µg/l; CK gesamt: 123 [<= 170] U/l; Cholesterin: 211"); Document document = new Document(); f.Formatter formatter = new f.Formatter(document); formatter.Laboratory = importer.Laboratory; formatter.Settings = new zaaReloaded2.Controller.Settings( new List() { new Items("CsA (C0) \"(Ziel-Talspiegel: <> µg/l)\"") }); formatter.Run(); Assert.AreEqual( "Laborwerte vom 17.09.2015-201810:44:00:\rCsA (C0) 130 µg/l\r\r", document.Range().Text); } string GetResourceText(string resource) { try { Stream s = this.GetType().Assembly .GetManifestResourceStream(resource); StreamReader sr = new StreamReader(s); // Need to replace \r\n with \r because this is the newline character // that Word uses. return sr.ReadToEnd().Replace("\r\n", "\r"); } catch (Exception e) { throw new IOException("Unable to read " + resource, e); } } } }