/* PrescriptionTest.cs * part of zaaReloaded2 * * Copyright 2015-2017 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 zaaReloaded2.Medication; namespace Tests.Medication { [TestFixture] class PrescriptionTest { [Test] [TestCase("Ramipril 5 mg 1-2-3", "Ramipril 5 mg", "1", "2", "3")] [TestCase("Ramipril 5 mg 1 -2 - 3", "Ramipril 5 mg", "1", "2", "3")] [TestCase("Ramipril 5 mg 1 - 2 - 3", "Ramipril 5 mg", "1", "2", "3")] [TestCase("Ramipril 5 mg 1 - 2 - 3", "Ramipril 5 mg", "1", "2", "3")] [TestCase("Ramipril 5 mg 1 1/2-2-3", "Ramipril 5 mg", "1 1/2", "2", "3")] [TestCase("Ramipril 5 mg 1 1/2 - 2 - 3", "Ramipril 5 mg", "1 1/2", "2", "3")] [TestCase("Ramipril 5 mg ½-⅓-¼", "Ramipril 5 mg", "½", "⅓", "¼")] public void ParseLine(string line, string drug, string morning, string noon, string evening) { Prescription p = Prescription.FromLine(line); Assert.AreEqual(drug, p.Drug, "Drug should be " + drug); Assert.AreEqual(morning, p.Morning, "Morning should be " + morning); Assert.AreEqual(noon, p.Noon, "Noon should be " + noon); Assert.AreEqual(evening, p.Evening, "Evening should be " + evening); } [Test] public void MultiplePrescriptions() { IEnumerable list = Prescription.ManyFromLine( "Ramipril 5 mg 1-0-0 \t Prograf 1 mg 1-0-1"); Assert.AreEqual(2, list.Count()); Assert.AreEqual("Ramipril 5 mg\t1-0-0", list.First().ToString()); Assert.AreEqual("Prograf 1 mg\t1-0-1", list.Last().ToString()); } [Test] [TestCase("Ramipril 5 mg", "1", "0", "0", "0", "Ramipril 5 mg\t1-0-0-0")] [TestCase("Ramipril 5 mg", "1", "0", "0", "", "Ramipril 5 mg\t1-0-0")] [TestCase("Ramipril 5 mg", "1", "0", "", "", "Ramipril 5 mg\t1-0")] [TestCase("Ramipril 5 mg", "1", "", "", "", "Ramipril 5 mg\t1")] [TestCase("Ramipril 5 mg", "1", "", "0", "0", "Ramipril 5 mg\t1-0-0-0")] [TestCase("Ramipril 5 mg", "1", "0", "", "0", "Ramipril 5 mg\t1-0-0-0")] [TestCase("Ramipril 5 mg", "1", "", "", "0", "Ramipril 5 mg\t1-0-0-0")] [TestCase("Ramipril 5 mg", "", "", "", "", "Ramipril 5 mg\t")] public void PrescriptionToString(string drug, string morning, string noon, string evening, string night, string formatted) { Prescription p = new Prescription(drug, morning, noon, evening, night); Assert.AreEqual(formatted, p.ToString()); } [Test] public void PrescriptionWithComment() { Prescription p = Prescription.FromLine("Ramipril 5 mg 1-0-2 (gesteigert)"); Assert.AreEqual("Ramipril 5 mg", p.Drug); Assert.AreEqual("1", p.Morning); Assert.AreEqual("0", p.Noon); Assert.AreEqual("2", p.Evening); Assert.AreEqual("(gesteigert)", p.Comment); Assert.AreEqual("Ramipril 5 mg\t1-0-2 (gesteigert)", p.ToString()); } [Test] public void PrescriptionsLineWithComment() { IList list = Prescription.ManyFromLine( "Ramipril 5 mg 1-0-2 (gesteigert) \t Concor 2,5 mg 3-2-1-0 neu"); Assert.AreEqual(2, list.Count); Assert.AreEqual("Ramipril 5 mg", list[0].Drug); Assert.AreEqual("1", list[0].Morning); Assert.AreEqual("0", list[0].Noon); Assert.AreEqual("2", list[0].Evening); Assert.AreEqual("", list[0].Night); Assert.AreEqual("(gesteigert)", list[0].Comment); Assert.AreEqual("Concor 2,5 mg", list[1].Drug); Assert.AreEqual("3", list[1].Morning); Assert.AreEqual("2", list[1].Noon); Assert.AreEqual("1", list[1].Evening); Assert.AreEqual("0", list[1].Night); Assert.AreEqual("neu", list[1].Comment); } [Test] public void PrescriptionWithoutTypicalDosing() { Prescription p = Prescription.FromLine("Eusaprim forte\t alle zwei Tage"); Assert.AreEqual("Eusaprim forte", p.Drug); Assert.AreEqual("alle zwei Tage", p.Comment); Assert.AreEqual("Eusaprim forte\talle zwei Tage", p.ToString(), "ToString"); } [Test] [TestCase("CellCept 500 mg", true)] [TestCase("Cell CEpt 500 mg", true)] [TestCase("Myfortic", true)] [TestCase("Mycophenolatmofetil 500 mg", true)] [TestCase("Cellophan 5 g", false)] [TestCase("MMF 500 mg", true)] public void MmfProperty(string drug, bool isMmf) { Prescription p = new Prescription(drug); Assert.AreEqual(isMmf, p.IsMmf); } } }