using lkfxdok.c;
using lkfxdok.LKF;
using lkfxdok.LKF.errors;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;

namespace lkfxdok.unittests
{
    [TestClass]
    public class UnitTestFeatures
    {
        [TestMethod]
        public void TestGetMeldeDiagTypeText()
        {
            var context = new LKFContext();

            sbyte typ = 48;

            while (typ <= 58)
            {
                Console.WriteLine($"{context.GetMeldeDiagTypeText(typ)}: {context.GetMeldeDiagText(typ)}");
                ++typ;
            }
        }

        [TestMethod]
        public void TestUTF8()
        {
            Controller.DataPath = UnitTestFiles.MetaDataPath;
            var context = new ContextWithData();
            context.Modelljahr = 2026;
            context.Flags = 32;
            var aufenthalt1 = new Aufenthalt("X01|K714|1234||20190621|1200|S|19360501|80|M|AT|AT|1010|90101|A|P||||E|20190621|1200|11|J|0");
            aufenthalt1.AddAbteilung("X02|K714|1234||20190621|01|11111100|20190621||J||||||N|80|");
            aufenthalt1.AddLeistung("X04|K714|1234||20190621|BG020||J|0001|20190621|2024|18111600|");
            aufenthalt1.AddDiagnose("X03|K714|1234||20190621|I51.9|H|D||");
            aufenthalt1.AddDiagnose("X03|K714|1234||20190621|R53|Z|D||");
            aufenthalt1.CopyTo(context);

            context.PlausCheck();
            context.Scoring();

            var errors = context.GetErrorStrings(ContextErrorList.All, ContextErrorList.Standard);
            foreach (var e in errors.Errors) { Console.WriteLine(e); }
            
        }
    }
}
