diff --git a/Server/ServerApp/DataDownload/DataDownloader.cs b/Server/ServerApp/DataDownload/DataDownloader.cs index ded22bcf27a712e29e9de9fe25840fad8f8a8b73..7c033d5ad73ed91d0b1a1bb0f902d1f98bb59f94 100644 --- a/Server/ServerApp/DataDownload/DataDownloader.cs +++ b/Server/ServerApp/DataDownload/DataDownloader.cs @@ -84,6 +84,22 @@ namespace ServerApp.DataDownload webClient = new WebClient(); } + /// <summary> + /// Downloads json file + /// </summary> + /// <returns> Path to file </returns> + public string DownloadWeatherPrediction() + { + // TODO either set this path as attribute or if parameter JsonParser needs an attribute that would be set through constructor + string predictionSite = "http://wttr.in/Plzen,czechia?format=j1"; + + DateTime now = DateTime.Now; + WebClient webClient = new WebClient(); + webClient.DownloadFile(predictionSite, $"data/{now.Year}{now.Month}{now.Day}.json"); + + return $"data/{now.Year}{now.Month}{now.Day}.json"; + } + /// <summary> /// Creates subdirectories for all data types /// TBD if we want to do it this way @@ -388,7 +404,6 @@ namespace ServerApp.DataDownload if (startDate == null || endDate == null) return GetData(subDirectory); - string[] files = Directory.GetFiles(subDirectory); List<string> found00Files = new List<string>(); List<string> relevantFiles = new List<string>(); diff --git a/Server/ServerApp/Parser/InputData/CsvDataLoader.cs b/Server/ServerApp/Parser/InputData/CsvDataLoader.cs index b19678461a308998ea42f8e06dd86fe7698bb781..1d3690847423d7939f970271191b30902dbdc1aa 100644 --- a/Server/ServerApp/Parser/InputData/CsvDataLoader.cs +++ b/Server/ServerApp/Parser/InputData/CsvDataLoader.cs @@ -40,6 +40,9 @@ namespace ServerApp.Parser.InputData public List<JisInstance> LoadJisFile(string pathToFile) { var lines = LoadCsv(pathToFile); + if (lines == null) + return null; + List<JisInstance> list = new List<JisInstance>(); if (lines == null) @@ -75,6 +78,9 @@ namespace ServerApp.Parser.InputData public List<LogInInstance> LoadLoginFile(string pathToFile) { var lines = LoadCsv(pathToFile); + if (lines == null) + return null; + List<LogInInstance> list = new List<LogInInstance>(); if (lines == null) @@ -120,6 +126,9 @@ namespace ServerApp.Parser.InputData public List<WeatherInstance> LoadWeatherFile(string pathToFile) { var lines = LoadCsv(pathToFile); + if (lines == null) + return null; + List<WeatherInstance> list = new List<WeatherInstance>(); if (lines == null) diff --git a/Server/ServerApp/Parser/InputData/IDataLoader.cs b/Server/ServerApp/Parser/InputData/IDataLoader.cs index f0772dd939f380623c9f3a0506d28570e2addf75..cabdcd7ebf7524c0612a5a82a9fe4fca20b1449a 100644 --- a/Server/ServerApp/Parser/InputData/IDataLoader.cs +++ b/Server/ServerApp/Parser/InputData/IDataLoader.cs @@ -10,7 +10,7 @@ namespace ServerApp.Parser.InputData /// Interface that every DataLoader should implement /// </summary> /// <author>A. Konig</author> - interface IDataLoader + public interface IDataLoader { /// <summary> /// Load jis data from file diff --git a/Server/ServerApp/Parser/InputData/JisInstance.cs b/Server/ServerApp/Parser/InputData/JisInstance.cs index 82af5e9caf5a099b09ddede946f44bdd8c94824e..d9b3927e1896afe004bf2b05e8bc21e3e9922674 100644 --- a/Server/ServerApp/Parser/InputData/JisInstance.cs +++ b/Server/ServerApp/Parser/InputData/JisInstance.cs @@ -18,7 +18,7 @@ namespace ServerApp.Parser.InputData /// [place tag];[date time];[amount] /// </summary> /// <author>A. Konig</author> - class JisInstance + public class JisInstance { /// <summary> Place tag </summary> // index 0 diff --git a/Server/ServerApp/Parser/InputData/LogInInstance.cs b/Server/ServerApp/Parser/InputData/LogInInstance.cs index 7fba2c2bd92f4bfffc8cc595fd588bd21e731160..14f7423898a479caed2afbab58a5ca69d4bb6bd8 100644 --- a/Server/ServerApp/Parser/InputData/LogInInstance.cs +++ b/Server/ServerApp/Parser/InputData/LogInInstance.cs @@ -25,7 +25,7 @@ namespace ServerApp.Parser.InputData /// [datum];[amount];[lesson];[lesson start];[lesson end];[building];[room type];[room];[hostname] /// </summary> /// <author>A. Konig</author> - class LogInInstance + public class LogInInstance { /// <summary> Date time </summary> // index 0 diff --git a/Server/ServerApp/Parser/InputData/WeatherInstance.cs b/Server/ServerApp/Parser/InputData/WeatherInstance.cs index 7ee6ef6807a61386d3cd1514aef140084494dfbb..b95ab47a60540617e0bcc19727fcdb15da2420c4 100644 --- a/Server/ServerApp/Parser/InputData/WeatherInstance.cs +++ b/Server/ServerApp/Parser/InputData/WeatherInstance.cs @@ -14,7 +14,7 @@ namespace ServerApp.Parser.InputData /// [date time];[temperature];[wind];[rain];[luminance] /// </summary> /// <author>A. Konig</author> - class WeatherInstance + public class WeatherInstance { /// <summary> Date and time </summary> // index 0 @@ -48,5 +48,20 @@ namespace ServerApp.Parser.InputData this.rain = rain; this.lum = lum; } + + /// <summary> + /// Eqquals + /// </summary> + /// <param name="obj"> Other object </param> + /// <returns></returns> + public override bool Equals(object obj) + { + WeatherInstance other = (WeatherInstance) obj; + + if (dateTime == other.dateTime && temp == other.temp && wind == other.wind && rain == other.rain && lum == other.lum) + return true; + + return false; + } } } diff --git a/Server/ServerApp/Parser/OutputInfo/ActivityInfo.cs b/Server/ServerApp/Parser/OutputInfo/ActivityInfo.cs index d3321a9a1f46e5dd98abdb163320e5d39d0aa4db..986b2f3a345eb085efa992afec86b8180693a290 100644 --- a/Server/ServerApp/Parser/OutputInfo/ActivityInfo.cs +++ b/Server/ServerApp/Parser/OutputInfo/ActivityInfo.cs @@ -45,5 +45,21 @@ namespace ServerApp.Parser.OutputInfo { return $"{startTime} \t {building} \t {amount}"; } + + + /// <summary> + /// Compares object to other instance + /// </summary> + /// <param name="obj"></param> + /// <returns></returns> + public override bool Equals(object obj) + { + ActivityInfo other = (ActivityInfo)obj; + + if (building == other.building && amount == other.amount && startTime == other.startTime && intervalLength == other.intervalLength) + return true; + + return false; + } } } diff --git a/Server/ServerApp/Parser/OutputInfo/ValueToConditions.cs b/Server/ServerApp/Parser/OutputInfo/ValueToConditions.cs index 09c08130c961ddf249846d4d766e62c28a48882b..7e1f3e52e577d4490b094c819eded037833b54a2 100644 --- a/Server/ServerApp/Parser/OutputInfo/ValueToConditions.cs +++ b/Server/ServerApp/Parser/OutputInfo/ValueToConditions.cs @@ -35,7 +35,7 @@ namespace ServerApp.Parser.OutputInfo /// </summary> /// <param name="condition">Weather conditions</param> /// <returns>Lux value</returns> - internal static double TransferConditionsToLux(WeatherConditions condition) + public static double TransferConditionsToLux(WeatherConditions condition) { if (condition == WeatherConditions.Sunny) return 60_000; diff --git a/Server/ServerApp/Parser/OutputInfo/WeatherInfo.cs b/Server/ServerApp/Parser/OutputInfo/WeatherInfo.cs index 8ba044b816c865ff8e77b7272bcaf5206d986971..e032a7f9d636da7b883897e3f8cbf79af49c7c15 100644 --- a/Server/ServerApp/Parser/OutputInfo/WeatherInfo.cs +++ b/Server/ServerApp/Parser/OutputInfo/WeatherInfo.cs @@ -85,5 +85,19 @@ namespace ServerApp.Parser.OutputInfo return $"{startTime} \t {temp}°C \t {rain}% \t {wind}m/s \t {condition.ToString()} \t {lum}"; } + /// <summary> + /// Eqquals + /// </summary> + /// <param name="obj"> Other object </param> + /// <returns></returns> + public override bool Equals(object obj) + { + WeatherInfo other = (WeatherInfo) obj; + + if (startTime == other.startTime && temp == other.temp && wind == other.wind && rain == other.rain && condition == other.condition) + return true; + + return false; + } } } diff --git a/Server/ServerApp/Parser/Parsers/DataParser.cs b/Server/ServerApp/Parser/Parsers/DataParser.cs index 8e98de1646641bf9900d4d4ee1bbe880d12abc35..28af53e30bc90fe0a144bd6c9be15a8b8bdf58d5 100644 --- a/Server/ServerApp/Parser/Parsers/DataParser.cs +++ b/Server/ServerApp/Parser/Parsers/DataParser.cs @@ -34,7 +34,6 @@ namespace ServerApp.Parser.Parsers /// <summary> ActivityInfo representing login activity</summary> List<ActivityInfo> loginList; - /// <summary> /// Constructor /// </summary> @@ -70,12 +69,12 @@ namespace ServerApp.Parser.Parsers string pathLogIn = downloader.DataSubDirectories[DataType.STROJE]; // get all files that should be parsed - Date start = null; - Date end = null; - if (startTime != null || endTime != null) + Date start = new Date((uint)startTime.Month, (uint)startTime.Year); + Date end = new Date((uint)endTime.Month, (uint)endTime.Year); + if (startTime == DateTime.MinValue || endTime == DateTime.MaxValue) { - start = new Date((uint)startTime.Month, (uint)startTime.Year); - end = new Date((uint)endTime.Month, (uint)endTime.Year); + start = null; + end = null; } var weatherFiles = downloader.GetData(pathWeather, start, end); @@ -190,7 +189,7 @@ namespace ServerApp.Parser.Parsers if (indexLogin < loginList.Count) - res.AddRange(jisList.GetRange(indexLogin, loginList.Count - indexLogin)); + res.AddRange(loginList.GetRange(indexLogin, loginList.Count - indexLogin)); return res; } diff --git a/Server/ServerApp/Parser/Parsers/JisParser.cs b/Server/ServerApp/Parser/Parsers/JisParser.cs index 1a2914d5ef05b9711ea7880af52b7595fa9b6651..0d1d3d0619f64542759a9adfd69462e5744d1da8 100644 --- a/Server/ServerApp/Parser/Parsers/JisParser.cs +++ b/Server/ServerApp/Parser/Parsers/JisParser.cs @@ -15,7 +15,7 @@ namespace ServerApp.Parser.Parsers /// Data parsed from 7am (included) to 18pm (included) /// </summary> /// <author>A. Konig</author> - class JisParser + public class JisParser { /// <summary> Datafile loader </summary> @@ -78,10 +78,9 @@ namespace ServerApp.Parser.Parsers { List<ActivityInfo> jisInfo = new List<ActivityInfo>(); - if (!File.Exists(path)) - return jisInfo; - List<JisInstance> list = loader.LoadJisFile(path); + if (list == null) + return jisInfo; // data for each faculty int[] recordedAmount = new int[TagInfo.buildings.Length]; @@ -107,7 +106,8 @@ namespace ServerApp.Parser.Parsers for (int k = 0; k < TagInfo.buildings.Length; k++) { ActivityInfo dayInfo = new ActivityInfo(TagInfo.buildings[k], recordedAmount[k], lastStartTime, range); - jisInfo.Add(dayInfo); + if (recordedAmount[k] != 0) + jisInfo.Add(dayInfo); } recordedAmount = new int[TagInfo.buildings.Length]; @@ -141,7 +141,8 @@ namespace ServerApp.Parser.Parsers for (int k = 0; k < TagInfo.buildings.Length; k++) { ActivityInfo dayInfo = new ActivityInfo(TagInfo.buildings[k], recordedAmount[k], lastStartTime, range); - jisInfo.Add(dayInfo); + if (recordedAmount[k] != 0) + jisInfo.Add(dayInfo); } return jisInfo; @@ -158,11 +159,10 @@ namespace ServerApp.Parser.Parsers private List<ActivityInfo> ProcessOneJisFileAsIntervals(string path, int interval, DateTime startTime, DateTime endTime) { List<ActivityInfo> jisInfo = new List<ActivityInfo>(); - - if (!File.Exists(path)) - return jisInfo; List<JisInstance> list = loader.LoadJisFile(path); + if (list == null) + return jisInfo; // data for each faculty int[] recordedAmount = new int[TagInfo.buildings.Length]; @@ -207,6 +207,8 @@ namespace ServerApp.Parser.Parsers // start time of last interval DateTime stTime = new DateTime(lastStartTime.Year, lastStartTime.Month, lastStartTime.Day, startingTime, 0, 0); + // TODO zjistit kolik se vynechalo a přidat tolik nul? + // find end and start time if (!trigger) index++; @@ -223,7 +225,8 @@ namespace ServerApp.Parser.Parsers for (int k = 0; k < TagInfo.buildings.Length; k++) { ActivityInfo dayInfo = new ActivityInfo(TagInfo.buildings[k], recordedAmount[k], stTime, interval); - jisInfo.Add(dayInfo); + if (recordedAmount[k] != 0) + jisInfo.Add(dayInfo); } recordedAmount = new int[TagInfo.buildings.Length]; @@ -254,10 +257,12 @@ namespace ServerApp.Parser.Parsers } // last day + DateTime startT = new DateTime(lastStartTime.Year, lastStartTime.Month, lastStartTime.Day, startingTime, 0, 0); for (int k = 0; k < TagInfo.buildings.Length; k++) { - ActivityInfo dayInfo = new ActivityInfo(TagInfo.buildings[k], recordedAmount[k], lastStartTime, interval); - jisInfo.Add(dayInfo); + ActivityInfo dayInfo = new ActivityInfo(TagInfo.buildings[k], recordedAmount[k], startT, interval); + if (recordedAmount[k] != 0) + jisInfo.Add(dayInfo); } return jisInfo; diff --git a/Server/ServerApp/Parser/Parsers/LogInParser.cs b/Server/ServerApp/Parser/Parsers/LogInParser.cs index 32e53a2a4d11788e29b8759e6bd15eb3ef532e8c..a36f198cbf7d30c59f8ae00ccff306c20096d26e 100644 --- a/Server/ServerApp/Parser/Parsers/LogInParser.cs +++ b/Server/ServerApp/Parser/Parsers/LogInParser.cs @@ -15,7 +15,7 @@ namespace ServerApp.Parser.Parsers /// Data parsed from 7am (included) to 18pm (included) /// </summary> /// <author>A. Konig</author> - class LogInParser + public class LogInParser { /// <summary> Datafile loader </summary> IDataLoader loader; @@ -77,10 +77,9 @@ namespace ServerApp.Parser.Parsers { List<ActivityInfo> loginInfo = new List<ActivityInfo>(); - if (!File.Exists(path)) - return loginInfo; - List<LogInInstance> list = loader.LoadLoginFile(path); + if (list == null) + return loginInfo; // data for each faculty int[] recordedAmount = new int[TagInfo.buildings.Length]; @@ -100,13 +99,15 @@ namespace ServerApp.Parser.Parsers // start of the day -> make an instance string place = list[i].building; DateTime date = new DateTime(list[i].date.Year, list[i].date.Month, list[i].date.Day, minmaxHour[0], 0, 0); + DateTime dateOfLessonStart = new DateTime(list[i].date.Year, list[i].date.Month, list[i].date.Day, list[i].lessonStart.Hour, list[i].lessonStart.Minute, list[i].lessonStart.Second); if (!date.Equals(lastStartDay)) { // data for each faculty separate for (int k = 0; k < TagInfo.buildings.Length; k++) { ActivityInfo dayInfo = new ActivityInfo(TagInfo.buildings[k], recordedAmount[k], lastStartDay, range); - loginInfo.Add(dayInfo); + if (recordedAmount[k] != 0) + loginInfo.Add(dayInfo); } recordedAmount = new int[TagInfo.buildings.Length]; @@ -114,7 +115,7 @@ namespace ServerApp.Parser.Parsers } // if not in allowed time window -> discard - if (list[i].date < startTime || list[i].date > endTime) + if (dateOfLessonStart < startTime || dateOfLessonStart > endTime) continue; // aggregate data @@ -143,7 +144,8 @@ namespace ServerApp.Parser.Parsers for (int k = 0; k < TagInfo.buildings.Length; k++) { ActivityInfo dayInfo = new ActivityInfo(TagInfo.buildings[k], recordedAmount[k], lastStartDay, range); - loginInfo.Add(dayInfo); + if (recordedAmount[k] != 0) + loginInfo.Add(dayInfo); } return loginInfo; @@ -161,10 +163,9 @@ namespace ServerApp.Parser.Parsers { List<ActivityInfo> loginInfo = new List<ActivityInfo>(); - if (!File.Exists(path)) - return loginInfo; - List<LogInInstance> list = loader.LoadLoginFile(path); + if (list == null) + return loginInfo; // min/max hour taken into account int[] minmaxHour = new int[] { 7, 18 }; @@ -194,6 +195,7 @@ namespace ServerApp.Parser.Parsers // start of the day -> make an instance string place = list[i].building; DateTime date = new DateTime(list[i].date.Year, list[i].date.Month, list[i].date.Day, list[i].lessonStart.Hour, 0, 0); + DateTime dateOfLessonStart = new DateTime(list[i].date.Year, list[i].date.Month, list[i].date.Day, list[i].lessonStart.Hour, list[i].lessonStart.Minute, list[i].lessonStart.Second); // end of the day if (!(date.Year == lastStartTime.Year && date.Month == lastStartTime.Month && date.Day == lastStartTime.Day)) @@ -207,7 +209,8 @@ namespace ServerApp.Parser.Parsers for (int l = 0; l < TagInfo.buildings.Length; l++) { ActivityInfo dayInfo = new ActivityInfo(TagInfo.buildings[l], data[k][l], stTime, interval); - loginInfo.Add(dayInfo); + if (data[k][l] != 0) + loginInfo.Add(dayInfo); } data[k] = new int[TagInfo.buildings.Length]; @@ -216,7 +219,7 @@ namespace ServerApp.Parser.Parsers } // if not in allowed time window -> discard - if (list[i].date < startTime || list[i].date > endTime) + if (dateOfLessonStart < startTime || dateOfLessonStart > endTime) continue; // find index for current instance @@ -264,7 +267,8 @@ namespace ServerApp.Parser.Parsers for (int l = 0; l < TagInfo.buildings.Length; l++) { ActivityInfo dayInfo = new ActivityInfo(TagInfo.buildings[l], data[k][l], stTime, interval); - loginInfo.Add(dayInfo); + if (data[k][l] != 0) + loginInfo.Add(dayInfo); } } diff --git a/Server/ServerApp/Parser/Parsers/TagInfo.cs b/Server/ServerApp/Parser/Parsers/TagInfo.cs index da5006bfc8e74abd5f21f16c732ddbcffb7634e7..3a74b491decd6cb3f9a1068cc8e8ab9b64be5934 100644 --- a/Server/ServerApp/Parser/Parsers/TagInfo.cs +++ b/Server/ServerApp/Parser/Parsers/TagInfo.cs @@ -10,7 +10,7 @@ namespace ServerApp.Parser.Parsers /// Class with Tags used in application /// </summary> /// <author>Alex Konig</author> - class TagInfo + public class TagInfo { public static string[] buildings; diff --git a/Server/ServerApp/Parser/Parsers/WeatherParser.cs b/Server/ServerApp/Parser/Parsers/WeatherParser.cs index f8754a16d8b4b3d8ffc462c94081fe7dfab33dad..e81418617eec7be7e5e9c77d55fab66a433906f8 100644 --- a/Server/ServerApp/Parser/Parsers/WeatherParser.cs +++ b/Server/ServerApp/Parser/Parsers/WeatherParser.cs @@ -15,7 +15,7 @@ namespace ServerApp.Parser.Parsers /// Data parsed from 7am (included) to 18pm (included) /// </summary> /// <author>A. Konig</author> - class WeatherParser + public class WeatherParser { /// <summary> Datafile loader </summary> @@ -44,7 +44,7 @@ namespace ServerApp.Parser.Parsers { List<WeatherInfo> list = new List<WeatherInfo>(); - if (weatherFiles == null || startTime == null || endTime == null || interval <= 0) + if (weatherFiles == null || interval <= 0) return list; // get all files in folder @@ -80,10 +80,9 @@ namespace ServerApp.Parser.Parsers { List<WeatherInfo> weatherInfo = new List<WeatherInfo>(); - if (!File.Exists(path)) - return weatherInfo; - List<WeatherInstance> list = loader.LoadWeatherFile(path); + if (list == null) + return weatherInfo; // array with data [temp, rain, wind, lum] double[] recordedAmount = new double[4]; @@ -116,8 +115,10 @@ namespace ServerApp.Parser.Parsers } // if not in allowed time window -> discard - if (list[i].dateTime < startTime|| list[i].dateTime > endTime) + if (list[i].dateTime < startTime || list[i].dateTime > endTime) + { continue; + } // aggregate data recordedAmount[0] += list[i].temp; @@ -125,14 +126,19 @@ namespace ServerApp.Parser.Parsers recordedAmount[2] += list[i].wind; if (ValueToConditions.TransferLuxToConditions(list[i].lum * 1000) != WeatherConditions.Dark) + { recordedAmount[3] += list[i].lum * 1000; weatherValues++; + } values++; } // data from last day - WeatherInfo dayInfo2 = new WeatherInfo(lastStartDay, recordedAmount[0] / values, (int)(recordedAmount[1] / values * 100), recordedAmount[2] / values, recordedAmount[3] / values, range); - weatherInfo.Add(dayInfo2); + if (values != 0) + { + WeatherInfo dayInfo2 = new WeatherInfo(lastStartDay, recordedAmount[0] / values, (int)(recordedAmount[1] / values * 100), recordedAmount[2] / values, recordedAmount[3] / weatherValues, range); + weatherInfo.Add(dayInfo2); + } return weatherInfo; } @@ -149,10 +155,9 @@ namespace ServerApp.Parser.Parsers { List<WeatherInfo> weatherInfo = new List<WeatherInfo>(); - if (!File.Exists(path)) - return weatherInfo; - List<WeatherInstance> list = loader.LoadWeatherFile(path); + if (list == null) + return weatherInfo; // min/max hour taken into account int[] minmaxHour = new int[] { 7, 18 }; @@ -169,6 +174,7 @@ namespace ServerApp.Parser.Parsers { to[i] = minmaxHour[0] + interval * (i + 1); data[i] = new double[4]; + count[i] = 0; } // first day @@ -208,7 +214,10 @@ namespace ServerApp.Parser.Parsers lastStartTime = date; count = new int[indices]; for (int l = 0; l < data.Length; l++) + { data[l] = new double[4]; + count[l] = 0; + } } // if not in allowed time window -> discard diff --git a/Server/ServerApp/Program.cs b/Server/ServerApp/Program.cs index b9358583b253ddb238e74a8af20d008d13a81ee3..3a4cb4fd2b6d85fa18361ba83cae5a7c77485895 100644 --- a/Server/ServerApp/Program.cs +++ b/Server/ServerApp/Program.cs @@ -34,7 +34,6 @@ namespace ServerApp { // SETUP FOLDERS - Config config = FillConfigInfo(args); if (config == null) { diff --git a/Server/ServerApp/WeatherPredictionParser/IJsonParser.cs b/Server/ServerApp/WeatherPredictionParser/IJsonParser.cs index 3f34437fbb12e865de2c9c580decf3cb7065195d..9659bb6d6ff9d544d9de27c21e0988c7e44f5329 100644 --- a/Server/ServerApp/WeatherPredictionParser/IJsonParser.cs +++ b/Server/ServerApp/WeatherPredictionParser/IJsonParser.cs @@ -11,7 +11,7 @@ namespace ServerApp.WeatherPredictionParser /// <summary> /// Abstract class that every Json parser should inherit from /// </summary> - abstract class IJsonParser + public abstract class IJsonParser { /// <summary> Current weather </summary> diff --git a/Server/ServerApp/WeatherPredictionParser/JsonParser.cs b/Server/ServerApp/WeatherPredictionParser/JsonParser.cs index a20349b6ef9a1e5a48d0a7dc9f7c892bf48645da..8cc3978c09d7473e74c415745d065d15ae91390d 100644 --- a/Server/ServerApp/WeatherPredictionParser/JsonParser.cs +++ b/Server/ServerApp/WeatherPredictionParser/JsonParser.cs @@ -18,7 +18,7 @@ namespace ServerApp.WeatherPredictionParser /// Class representing a parser for json prediction data /// </summary> /// <author>A. Konig</author> - class JsonParser : IJsonParser + public class JsonParser : IJsonParser { /// <summary> Data loader </summary> DataDownloader loader; @@ -29,7 +29,6 @@ namespace ServerApp.WeatherPredictionParser /// <summary> Sunset time of currently parsed day </summary> DateTime sunsetTime; - /// <summary> /// Constructor /// </summary> @@ -42,8 +41,8 @@ namespace ServerApp.WeatherPredictionParser /// <summary> /// Get predictions from Predictions that are within specified time span /// From-to including - /// If from == null then all until to - /// If to == null then all starting from from + /// If from == DateTime.Min then all until to + /// If to == DateTime.Max then all starting from from /// </summary> /// <param name="from">DateTime from</param> /// <param name="to">DateTime to</param> @@ -55,19 +54,30 @@ namespace ServerApp.WeatherPredictionParser List<WeatherInfo> res = new List<WeatherInfo>(); - if (from == null) + if (from == DateTime.MinValue) from = Predictions[0].startTime; - if (to == null) - from = Predictions[Predictions.Count].startTime; + if (to == DateTime.MaxValue) { + DateTime dt = Predictions[Predictions.Count - 1].startTime; + int hour = dt.Hour + Predictions[Predictions.Count - 1].intervalLength; + bool addDay = false; + if (hour >= 24) + { + hour -= 24; + addDay = true; + } + to = new DateTime(dt.Year, dt.Month, dt.Day, hour, dt.Minute, dt.Second); + if (addDay) + to = to.AddDays(1); + } if (from > to) return null; + // for all parsed weather info foreach (WeatherInfo pred in Predictions) { int hour = pred.startTime.Hour + pred.intervalLength; - Console.WriteLine(pred.intervalLength); bool addDay = false; if (hour >= 24) { @@ -79,13 +89,14 @@ namespace ServerApp.WeatherPredictionParser endTime = endTime.AddDays(1); // if both end and start not outside of interval - if (!((pred.startTime < from && endTime <= from) || (pred.startTime > to && endTime >= to))) + if (!((pred.startTime < from && endTime <= from) || (pred.startTime > to && endTime > to))) res.Add(pred); } return res; } + /// <summary> /// Parse weather prediction /// Results is in attributes current for current weather and pred for weather prediction for today, tommorrow and day after tommorrow @@ -95,7 +106,7 @@ namespace ServerApp.WeatherPredictionParser // TODO ask DataDownloader for download said file and return path to it // get file - string file = DownloadWeatherPrediction(); + string file = loader.DownloadWeatherPrediction(); DateTime now = DateTime.Now; Console.WriteLine(File.Exists(file)); @@ -155,20 +166,6 @@ namespace ServerApp.WeatherPredictionParser Console.WriteLine(w); } - // TODO move to data loader - /// <summary> - /// Downloads json file - /// </summary> - /// <returns> Path to file </returns> - private string DownloadWeatherPrediction() - { - DateTime now = DateTime.Now; - WebClient webClient = new WebClient(); - webClient.DownloadFile("http://wttr.in/Plzen,czechia?format=j1", $"data/{now.Year}{now.Month}{now.Day}.json"); - - return $"data/{now.Year}{now.Month}{now.Day}.json"; - } - /// <summary> /// Change data in a way that they now reflect sunrise and sunset times /// If current time under sunrise or over sunset -> WeatherConditions is Dark @@ -379,7 +376,6 @@ namespace ServerApp.WeatherPredictionParser // Console.WriteLine(weather.ToString()); Predictions.Add(weather); - } } diff --git a/Server/TestProject/ParserTests/TestingParser.cs b/Server/TestProject/ParserTests/TestingParser.cs new file mode 100644 index 0000000000000000000000000000000000000000..01e10621968c2b5ea37eb5ad99622b4c58bb0fa5 --- /dev/null +++ b/Server/TestProject/ParserTests/TestingParser.cs @@ -0,0 +1,1197 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using ServerApp.Parser.Parsers; +using System.Collections.Generic; +using ServerApp.Parser.OutputInfo; +using Moq; +using ServerApp.Parser.InputData; +using ServerApp.WeatherPredictionParser; +using ServerApp.DataDownload; + +// 1h +// 0.5h to edit parsers + +namespace TestProject +{ + + [TestClass] + public class TestingParser + { + [TestMethod] + public void AbstactClassTest() + { + IDataParser p = new DataParser(null); + List<ActivityInfo> aa = p.AttendanceList; + List<WeatherInfo> wa = p.WeatherList; + + DataParser pp = (DataParser)p; + List<ActivityInfo> ap = pp.AttendanceList; + List<WeatherInfo> wp = pp.WeatherList; + + Assert.AreEqual(aa, ap); + Assert.AreEqual(wa, wp); + } + + // ------------------------------------ MERGE LISTS ------------------------------------- + + #region Merge lists + [TestMethod] + public void MergeListsNull() + { + DataParser target = new DataParser(null); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = null; + List<ActivityInfo> pc = null; + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc); + Assert.AreEqual(0, retVal.Count); + } + + [TestMethod] + public void MergeListsJisNull() + { + DataParser target = new DataParser(null); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = null; + List<ActivityInfo> pc = new List<ActivityInfo>(); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc); + Assert.AreEqual(pc, retVal); + } + + [TestMethod] + public void MergeListsPcNull() + { + DataParser target = new DataParser(null); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = null; + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc); + Assert.AreEqual(jis, retVal); + } + + [TestMethod] + public void MergeListsOneNoOverlap() + { + DataParser target = new DataParser(null); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + jis.Add(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 15, 0, 0), 3)); + pc.Add(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 18, 0, 0), 3)); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc); + + Assert.AreEqual(2, retVal.Count); + Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 15, 0, 0), 3), retVal[0]); + Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 18, 0, 0), 3), retVal[1]); + } + + [TestMethod] + public void MergeListsOneOverlap() + { + DataParser target = new DataParser(null); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + jis.Add(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 15, 0, 0), 3)); + pc.Add(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 15, 0, 0), 3)); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc); + + Assert.AreEqual(1, retVal.Count); + Assert.AreEqual(new ActivityInfo("FAV", 8, new DateTime(2001, 1, 1, 15, 0, 0), 3), retVal[0]); + } + + [TestMethod] + public void MergeListsTwoNoOverlap() + { + DataParser target = new DataParser(null); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + jis.Add(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 9, 0, 0), 3)); + jis.Add(new ActivityInfo("FAV", 1, new DateTime(2001, 1, 1, 15, 0, 0), 3)); + pc.Add(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3)); + pc.Add(new ActivityInfo("FAV", 2, new DateTime(2001, 1, 1, 18, 0, 0), 3)); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc); + + Assert.AreEqual(4, retVal.Count); + Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 9, 0, 0), 3), retVal[0]); + Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3), retVal[1]); + Assert.AreEqual(new ActivityInfo("FAV", 1, new DateTime(2001, 1, 1, 15, 0, 0), 3), retVal[2]); + Assert.AreEqual(new ActivityInfo("FAV", 2, new DateTime(2001, 1, 1, 18, 0, 0), 3), retVal[3]); + } + + [TestMethod] + public void MergeListsTwoOverlap() + { + DataParser target = new DataParser(null); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + jis.Add(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 9, 0, 0), 3)); + jis.Add(new ActivityInfo("FAV", 1, new DateTime(2001, 1, 1, 15, 0, 0), 3)); + pc.Add(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3)); + pc.Add(new ActivityInfo("FAV", 2, new DateTime(2001, 1, 1, 15, 0, 0), 3)); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc); + + Assert.AreEqual(3, retVal.Count); + Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2001, 1, 1, 9, 0, 0), 3), retVal[0]); + Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3), retVal[1]); + Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 15, 0, 0), 3), retVal[2]); + } + + [TestMethod] + public void MergeListsMultiple() + { + DataParser target = new DataParser(null); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + jis.Add(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 10, 9, 0, 0), 3)); + jis.Add(new ActivityInfo("FAV", 1, new DateTime(2001, 1, 1, 15, 0, 0), 3)); + jis.Add(new ActivityInfo("FDU", 3, new DateTime(2001, 4, 1, 15, 0, 0), 3)); + + pc.Add(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3)); + pc.Add(new ActivityInfo("FAV", 2, new DateTime(2001, 1, 1, 15, 0, 0), 3)); + pc.Add(new ActivityInfo("FAV", 5, new DateTime(2001, 4, 1, 15, 0, 0), 3)); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc); + + Assert.AreEqual(5, retVal.Count); + Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 10, 9, 0, 0), 3), retVal[0]); + Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 12, 0, 0), 3), retVal[1]); + Assert.AreEqual(new ActivityInfo("FAV", 3, new DateTime(2001, 1, 1, 15, 0, 0), 3), retVal[2]); + Assert.AreEqual(new ActivityInfo("FDU", 3, new DateTime(2001, 4, 1, 15, 0, 0), 3), retVal[3]); + Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2001, 4, 1, 15, 0, 0), 3), retVal[4]); + } + #endregion + + // ------------------------------ WEATHER PARSER ---------------------------------------- + + #region Weather parser + + #region Parse days + [TestMethod] + public void ParseWeatherDayOne() + { + string path = ""; + List<WeatherInstance> data = new List<WeatherInstance>(); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast)/1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 7, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast)/1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 10, 3, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast)/1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 12, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast)/1000)); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadWeatherFile(path)).Returns(data); + + WeatherParser target = new WeatherParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1)); + + Assert.AreEqual(1, retVal.Count); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 8, 50, 1.25, 10_000, 18-7), retVal[0]); + } + + [TestMethod] + public void ParseWeatherDayOneFiltering() + { + string path = ""; + List<WeatherInstance> data = new List<WeatherInstance>(); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 7, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 10, 3, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 12, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 13, 0, 0), 12, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadWeatherFile(path)).Returns(data); + + WeatherParser target = new WeatherParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1, 9, 0, 0), new DateTime(2000, 1, 1, 15, 0, 0)); + + Assert.AreEqual(1, retVal.Count); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 9.75, 25, 1.75, 10_000, 18 - 7), retVal[0]); + } + + [TestMethod] + public void ParseWeatherDayTwo() + { + string path = ""; + List<WeatherInstance> data = new List<WeatherInstance>(); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadWeatherFile(path)).Returns(data); + + WeatherParser target = new WeatherParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1)); + + Assert.AreEqual(2, retVal.Count); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 6, 100, 1, 10_000, 18-7), retVal[0]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 7, 0, 0), 10, 25, 2, 10_000, 18-7), retVal[1]); + } + + [TestMethod] + public void ParseWeatherDayTwoFiltering() + { + string path = ""; + List<WeatherInstance> data = new List<WeatherInstance>(); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadWeatherFile(path)).Returns(data); + + WeatherParser target = new WeatherParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsDays", path, new DateTime(2000, 1, 1, 8, 0, 0), new DateTime(2000, 1, 1, 11, 0, 0)); + + Assert.AreEqual(1, retVal.Count); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 6, 100, 1, 10_000, 18 - 7), retVal[0]); + //Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 7, 0, 0), 10, 25, 2, 10_000, 18 - 7), retVal[1]); + } + #endregion + + #region Parse hours + [TestMethod] + public void ParseWeatherHourOne() + { + string path = ""; + List<WeatherInstance> data = new List<WeatherInstance>(); + + // day 1 + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadWeatherFile(path)).Returns(data); + + WeatherParser target = new WeatherParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsIntervals", path, 2, new DateTime(2000, 1, 1, 8, 0, 0), new DateTime(2001, 1, 1, 11, 0, 0)); + + Assert.AreEqual(1, retVal.Count); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 5, 100, 0, (double)0, 2), retVal[0]); + } + + [TestMethod] + public void ParseWeatherHourMultiple() + { + string path = ""; + List<WeatherInstance> data = new List<WeatherInstance>(); + + // day 1 + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + // day 2 + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Sunny) / 1000)); + + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 15, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadWeatherFile(path)).Returns(data); + + WeatherParser target = new WeatherParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsIntervals", path, 2, new DateTime(2000, 1, 1, 8, 0, 0), new DateTime(2001, 1, 1, 11, 0, 0)); + + Assert.AreEqual(5, retVal.Count); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 7, 0, 0), 5, 100, 0, (double)0, 2), retVal[0]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 9, 0, 0), 6.5, 100, 1.5, 10_000, 2), retVal[1]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 11, 0, 0), 5, 0, 2, 60_000, 2), retVal[2]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 13, 0, 0), 10, 25, 2, 10_000, 2), retVal[3]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 15, 0, 0), 15, 40, 2, 10_000, 2), retVal[4]); + } + + + [TestMethod] + public void ParseWeatherHourFiltering() + { + string path = ""; + List<WeatherInstance> data = new List<WeatherInstance>(); + + // day 1 + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 10, 0, 0), 3, 3, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + // day 2 + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 12, 0, 0), 5, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Sunny) / 1000)); + + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 13, 15, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadWeatherFile(path)).Returns(data); + + WeatherParser target = new WeatherParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsIntervals", path, 2, new DateTime(2000, 1, 1, 9, 0, 0), new DateTime(2000, 2, 1, 13, 0, 0)); + + Assert.AreEqual(3, retVal.Count); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 9, 0, 0), 6.5, 100, 1.5, 10_000, 2), retVal[0]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 11, 0, 0), 5, 0, 2, 60_000, 2), retVal[1]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 2, 1, 13, 0, 0), 10, 33, 2, 10_000, 2), retVal[2]); + } + + [TestMethod] + public void ParseWeatherHourNone() + { + string path = ""; + List<WeatherInstance> data = new List<WeatherInstance>(); + + // day 1 + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 8, 0, 0), 5, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 1, 1, 9, 0, 0), 10, 0, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Dark) / 1000)); + + // day 2 + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 16, 0, 0), 10, 2, 0, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + data.Add(new WeatherInstance(new DateTime(2000, 2, 1, 17, 0, 0), 15, 2, 1, ValueToConditions.TransferConditionsToLux(WeatherConditions.Overcast) / 1000)); + + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadWeatherFile(path)).Returns(data); + + WeatherParser target = new WeatherParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> jis = new List<ActivityInfo>(); + List<ActivityInfo> pc = new List<ActivityInfo>(); + + List<WeatherInfo> retVal = (List<WeatherInfo>)obj.Invoke("ProcessOneWeatherFileAsIntervals", path, 2, new DateTime(2000, 1, 1, 10, 0, 0), new DateTime(2000, 2, 1, 15, 0, 0)); + + Assert.AreEqual(0, retVal.Count); + } + #endregion + + #endregion + + // -------------------------------- JIS PARSER ----------------------------------------- + + #region Jis parser + + #region Parse days + [TestMethod] + public void ParseJisDayOne() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<JisInstance> data = new List<JisInstance>(); + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 10, 0, 0), 3)); + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1)); + data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2)); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadJisFile(path)).Returns(data); + + JisParser target = new JisParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1)); + + Assert.AreEqual(2, retVal.Count); + Assert.AreEqual(new ActivityInfo("MENZA", 3, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]); + Assert.AreEqual(new ActivityInfo("KARMA", 5, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]); + } + + [TestMethod] + public void ParseJisDayOneFiltering() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<JisInstance> data = new List<JisInstance>(); + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 6, 0, 0), 2)); + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 10, 0, 0), 3)); + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1)); + data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2)); + data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 17, 0, 0), 2)); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadJisFile(path)).Returns(data); + + JisParser target = new JisParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 1, 1, 16, 0, 0)); + + Assert.AreEqual(2, retVal.Count); + Assert.AreEqual(new ActivityInfo("MENZA", 3, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]); + Assert.AreEqual(new ActivityInfo("KARMA", 5, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]); + } + + [TestMethod] + public void ParseJisDayTwo() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<JisInstance> data = new List<JisInstance>(); + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 10, 0, 0), 3)); + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1)); + data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2)); + + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 2, 1, 8, 0, 0), 8)); + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 2, 1, 12, 0, 0), 2)); + data.Add(new JisInstance("A2", new DateTime(2000, 2, 1, 16, 0, 0), 1)); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadJisFile(path)).Returns(data); + + JisParser target = new JisParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 2, 1, 16, 0, 0)); + + Assert.AreEqual(4, retVal.Count); + Assert.AreEqual(new ActivityInfo("MENZA", 3, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]); + Assert.AreEqual(new ActivityInfo("KARMA", 5, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]); + + Assert.AreEqual(new ActivityInfo("MENZA", 10, new DateTime(2000, 2, 1, 7, 0, 0), 18 - 7), retVal[2]); + Assert.AreEqual(new ActivityInfo("KARMA", 1, new DateTime(2000, 2, 1, 7, 0, 0), 18 - 7), retVal[3]); + } + + [TestMethod] + public void ParseJisDayTwoFiltering() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<JisInstance> data = new List<JisInstance>(); + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 6, 0, 0), 2)); + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 10, 0, 0), 3)); + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1)); + data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2)); + + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 2, 1, 8, 0, 0), 8)); + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 2, 1, 12, 0, 0), 2)); + data.Add(new JisInstance("A2", new DateTime(2000, 2, 1, 16, 0, 0), 1)); + data.Add(new JisInstance("A2", new DateTime(2000, 2, 1, 17, 0, 0), 2)); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadJisFile(path)).Returns(data); + + JisParser target = new JisParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 2, 1, 16, 0, 0)); + + Assert.AreEqual(4, retVal.Count); + Assert.AreEqual(new ActivityInfo("MENZA", 3, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]); + Assert.AreEqual(new ActivityInfo("KARMA", 5, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]); + + Assert.AreEqual(new ActivityInfo("MENZA", 10, new DateTime(2000, 2, 1, 7, 0, 0), 18 - 7), retVal[2]); + Assert.AreEqual(new ActivityInfo("KARMA", 1, new DateTime(2000, 2, 1, 7, 0, 0), 18 - 7), retVal[3]); + } + + + [TestMethod] + public void ParseJisDayNone() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<JisInstance> data = new List<JisInstance>(); + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 10, 0, 0), 3)); + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1)); + data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2)); + + data.Add(new JisInstance("A1", new DateTime(2000, 1, 2, 15, 0, 0), 2)); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadJisFile(path)).Returns(data); + + JisParser target = new JisParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsDays", path, new DateTime(2000, 1, 3), new DateTime(2001, 1, 1)); + + Assert.AreEqual(0, retVal.Count); + } + #endregion + + #region Parse hours + [TestMethod] + public void ParseJisHourlyOne() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<JisInstance> data = new List<JisInstance>(); + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 0, 0), 3)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 15, 0), 3)); + + /* + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 5)); + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 12, 0, 0), 1)); + data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 15, 0, 0), 2)); + */ + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadJisFile(path)).Returns(data); + + JisParser target = new JisParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1)); + + Assert.AreEqual(2, retVal.Count); + Assert.AreEqual(new ActivityInfo("MENZA", 2, new DateTime(2000, 1, 1, 7, 0, 0), 2), retVal[0]); + Assert.AreEqual(new ActivityInfo("KARMA", 6, new DateTime(2000, 1, 1, 7, 0, 0), 2), retVal[1]); + } + + [TestMethod] + public void ParseJisDayHourlyMultiple() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<JisInstance> data = new List<JisInstance>(); + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 7, 0, 0), 2)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 0, 0), 3)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 15, 0), 3)); + + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 11, 0, 0), 5)); + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 11, 10, 0), 1)); + data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 11, 20, 0), 2)); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadJisFile(path)).Returns(data); + + JisParser target = new JisParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1)); + + Assert.AreEqual(4, retVal.Count); + Assert.AreEqual(new ActivityInfo("MENZA", 2, new DateTime(2000, 1, 1, 7, 0, 0), 2), retVal[0]); + Assert.AreEqual(new ActivityInfo("KARMA", 6, new DateTime(2000, 1, 1, 7, 0, 0), 2), retVal[1]); + Assert.AreEqual(new ActivityInfo("MENZA", 6, new DateTime(2000, 1, 1, 11, 0, 0), 2), retVal[2]); + Assert.AreEqual(new ActivityInfo("KARMA", 2, new DateTime(2000, 1, 1, 11, 0, 0), 2), retVal[3]); + } + + [TestMethod] + public void ParseJisHourlyNone() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<JisInstance> data = new List<JisInstance>(); + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 3, 0, 0), 2)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 4, 0, 0), 3)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 5, 15, 0), 3)); + + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 19, 0, 0), 5)); + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 19, 10, 0), 1)); + data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 19, 20, 0), 2)); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadJisFile(path)).Returns(data); + + JisParser target = new JisParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1)); + + Assert.AreEqual(0, retVal.Count); + } + + [TestMethod] + public void ParseJisHourlyFiltering() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<JisInstance> data = new List<JisInstance>(); + data.Add(new JisInstance("MenzaKL-vydej", new DateTime(2000, 1, 1, 6, 0, 0), 2)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 0, 0), 3)); + data.Add(new JisInstance("A2-Hlavni vchod", new DateTime(2000, 1, 1, 8, 15, 0), 3)); + + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 11, 0, 0), 5)); + data.Add(new JisInstance("Menza4-kasa5", new DateTime(2000, 1, 1, 18, 10, 0), 1)); + data.Add(new JisInstance("A1", new DateTime(2000, 1, 1, 19, 20, 0), 2)); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadJisFile(path)).Returns(data); + + JisParser target = new JisParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneJisFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1)); + + Assert.AreEqual(3, retVal.Count); + Assert.AreEqual(new ActivityInfo("KARMA", 6, new DateTime(2000, 1, 1, 7, 0, 0), 2), retVal[0]); + Assert.AreEqual(new ActivityInfo("MENZA", 5, new DateTime(2000, 1, 1, 11, 0, 0), 2), retVal[1]); + Assert.AreEqual(new ActivityInfo("MENZA", 1, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[2]); + } + #endregion + + #endregion + + // -------------------------------- LOGIN PARSER ---------------------------------------- + + #region Login parser + + #region Parse days + [TestMethod] + public void ParseLoginDayOne() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<LogInInstance> data = new List<LogInInstance>(); + // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu" + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "UC", "Učebna", "UC-108", "uc233p02-fav")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 16, 00, 0), new DateTime(2000, 1, 1, 10, 5, 0), "UC", "Učebna", "LS-108", "ls233p02-fdu")); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadLoginFile(path)).Returns(data); + + LogInParser target = new LogInParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLogInFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1)); + + Assert.AreEqual(2, retVal.Count); + Assert.AreEqual(new ActivityInfo("FDU", 4, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]); + Assert.AreEqual(new ActivityInfo("FAV", 6, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]); + } + + [TestMethod] + public void ParseLoginDayOneFiltering() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<LogInInstance> data = new List<LogInInstance>(); + // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu" + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 6, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "UC", "Učebna", "UC-108", "uc233p02-fav")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 16, 00, 0), new DateTime(2000, 1, 1, 16, 5, 0), "UC", "Učebna", "UC-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "UC", "Učebna", "UC-108", "ls233p02-fdu")); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadLoginFile(path)).Returns(data); + + LogInParser target = new LogInParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLogInFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 1, 1, 16, 0, 0)); + + Assert.AreEqual(2, retVal.Count); + Assert.AreEqual(new ActivityInfo("FDU", 4, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]); + Assert.AreEqual(new ActivityInfo("FAV", 6, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]); + } + + [TestMethod] + public void ParseLoginDayTwo() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<LogInInstance> data = new List<LogInInstance>(); + // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu" + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "UC", "Učebna", "UC-108", "uc233p02-fav")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 16, 00, 0), new DateTime(2000, 1, 1, 16, 5, 0), "UC", "Učebna", "UC-108", "ls233p02-fdu")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 3, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EU", "Učebna", "EU-108", "uc233p02-fav")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu")); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadLoginFile(path)).Returns(data); + + LogInParser target = new LogInParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLogInFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 1, 3, 0, 0, 0)); + + Assert.AreEqual(4, retVal.Count); + Assert.AreEqual(new ActivityInfo("FDU", 4, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]); + Assert.AreEqual(new ActivityInfo("FAV", 6, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]); + + Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 2, 7, 0, 0), 18 - 7), retVal[2]); + Assert.AreEqual(new ActivityInfo("FEL", 5, new DateTime(2000, 1, 2, 7, 0, 0), 18 - 7), retVal[3]); + } + + [TestMethod] + public void ParseLoginDayTwoFiltering() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<LogInInstance> data = new List<LogInInstance>(); + // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu" + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 5, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "UC", "Učebna", "UC-108", "uc233p02-fav")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 16, 00, 0), new DateTime(2000, 1, 1, 16, 5, 0), "UC", "Učebna", "UC-108", "ls233p02-fdu")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 6, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 3, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EU", "Učebna", "EU-108", "uc233p02-fav")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 19, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 3, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 3, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu")); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadLoginFile(path)).Returns(data); + + LogInParser target = new LogInParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLogInFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 1, 3, 0, 0, 0)); + + Assert.AreEqual(4, retVal.Count); + Assert.AreEqual(new ActivityInfo("FDU", 4, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[0]); + Assert.AreEqual(new ActivityInfo("FAV", 6, new DateTime(2000, 1, 1, 7, 0, 0), 18 - 7), retVal[1]); + + Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 2, 7, 0, 0), 18 - 7), retVal[2]); + Assert.AreEqual(new ActivityInfo("FEL", 5, new DateTime(2000, 1, 2, 7, 0, 0), 18 - 7), retVal[3]); + } + + + [TestMethod] + public void ParseLoginDayNone() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<LogInInstance> data = new List<LogInInstance>(); + // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu" + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 5, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "UC", "Učebna", "UC-108", "uc233p02-fav")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 16, 00, 0), new DateTime(2000, 1, 1, 16, 5, 0), "UC", "Učebna", "UC-108", "ls233p02-fdu")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 3, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EU", "Učebna", "EU-108", "uc233p02-fav")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 6, new DateTime(2000, 1, 1, 12, 20, 0), new DateTime(2000, 1, 1, 12, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 7, new DateTime(2000, 1, 1, 17, 00, 0), new DateTime(2000, 1, 1, 17, 5, 0), "EU", "Učebna", "EU-108", "ls233p02-fdu")); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadLoginFile(path)).Returns(data); + + LogInParser target = new LogInParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLogInFileAsDays", path, new DateTime(2000, 1, 1), new DateTime(2000, 1, 1, 9, 0, 0)); + + Assert.AreEqual(0, retVal.Count); + } + #endregion + + #region Parse hours + [TestMethod] + public void ParseLoginHourlyOne() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<LogInInstance> data = new List<LogInInstance>(); + // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu" + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EL", "Učebna", "UC-108", "uc233p02-fav")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 13, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 14, 00, 0), new DateTime(2000, 1, 1, 10, 5, 0), "UC", "Učebna", "LS-108", "ls233p02-fdu")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 18, 0, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 18, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadLoginFile(path)).Returns(data); + + LogInParser target = new LogInParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLoginFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1)); + + Assert.AreEqual(5, retVal.Count); + Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[0]); + Assert.AreEqual(new ActivityInfo("FEL", 1, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[1]); + Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[2]); + Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[3]); + Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[4]); + } + + [TestMethod] + public void ParseLoginDayHourlyMultiple() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<LogInInstance> data = new List<LogInInstance>(); + // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu" + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EL", "Učebna", "UC-108", "uc233p02-fav")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 13, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 14, 00, 0), new DateTime(2000, 1, 1, 10, 5, 0), "UC", "Učebna", "LS-108", "ls233p02-fdu")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 18, 0, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 18, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadLoginFile(path)).Returns(data); + + LogInParser target = new LogInParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLoginFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1)); + + Assert.AreEqual(5, retVal.Count); + Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[0]); + Assert.AreEqual(new ActivityInfo("FEL", 1, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[1]); + Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[2]); + Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[3]); + Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 2, 17, 0, 0), 2), retVal[4]); + } + + [TestMethod] + public void ParseLoginHourlyFiltering() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<LogInInstance> data = new List<LogInInstance>(); + // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu" + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 5, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 9, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 10, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EL", "Učebna", "UC-108", "uc233p02-fav")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 13, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 14, 00, 0), new DateTime(2000, 1, 1, 10, 5, 0), "UC", "Učebna", "LS-108", "ls233p02-fdu")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 18, 0, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 18, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 19, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadLoginFile(path)).Returns(data); + + LogInParser target = new LogInParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLoginFileAsIntervals", path, 2, new DateTime(2000, 1, 1), new DateTime(2001, 1, 1)); + + Assert.AreEqual(5, retVal.Count); + Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[0]); + Assert.AreEqual(new ActivityInfo("FEL", 1, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[1]); + Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[2]); + Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[3]); + Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 2, 17, 0, 0), 2), retVal[4]); + } + + [TestMethod] + public void ParseLoginHourlyNone() + { + TagInfo.CreateDictionaries(); + + string path = ""; + List<LogInInstance> data = new List<LogInInstance>(); + // "01.06.2019 00:00:00"; 2; 4; "10:15"; "11:00"; "LS"; "Učebna"; "LS-234"; "ls233p02-fdu" + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 3, new DateTime(2000, 1, 1, 5, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 1, 4, new DateTime(2000, 1, 1, 9, 15, 0), new DateTime(2000, 1, 1, 11, 0, 0), "EL", "Učebna", "UC-108", "uc233p02-fav")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 19, 0, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 1, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 19, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "UC", "Učebna", "LS-108", "ls233p02-fdu")); + + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 2, 6, new DateTime(2000, 1, 1, 18, 0, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + data.Add(new LogInInstance(new DateTime(2000, 1, 2, 0, 0, 0), 5, 7, new DateTime(2000, 1, 1, 18, 20, 0), new DateTime(2000, 1, 1, 10, 5, 0), "LS", "Učebna", "LS-108", "ls233p02-fdu")); + + Mock<IDataLoader> dl = new Mock<IDataLoader>(); + dl.Setup(m => m.LoadLoginFile(path)).Returns(data); + + LogInParser target = new LogInParser(dl.Object); + PrivateObject obj = new PrivateObject(target); + + List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("ProcessOneLoginFileAsIntervals", path, 2, new DateTime(2000, 1, 1, 10, 0, 0), new DateTime(2000, 1, 2, 10, 0, 0)); + + Assert.AreEqual(0, retVal.Count); + } + #endregion + + #endregion + + // -------------------------------- JSON PARSER ----------------------------------------- + + #region Json parser + + [TestMethod] + public void JsonParser() + { + /* + TagInfo.CreateDictionaries(); + + // TODO make an input file + string data = ""; + + Mock<DataDownloader> dl = new Mock<DataDownloader>(); + dl.Setup(m => m.DownloadWeatherPrediction()).Returns(data); + + JsonParser target = new JsonParser(dl.Object); + + target.ParsePrediction(); + WeatherInfo current = target.Current; + List<WeatherInfo> retVal = target.Predictions; + + Assert.AreEqual(8, retVal.Count); + Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[0]); + Assert.AreEqual(new ActivityInfo("FEL", 1, new DateTime(2000, 1, 1, 9, 0, 0), 2), retVal[1]); + Assert.AreEqual(new ActivityInfo("FDU", 2, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[2]); + Assert.AreEqual(new ActivityInfo("FAV", 5, new DateTime(2000, 1, 1, 13, 0, 0), 2), retVal[3]); + Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[4]); + Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[5]); + Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[6]); + Assert.AreEqual(new ActivityInfo("FDU", 7, new DateTime(2000, 1, 1, 17, 0, 0), 2), retVal[7]); + */ + } + + + [TestMethod] + public void GetPredictionForTimeFilter() + { + string data = ""; + Mock<DataDownloader> dl = new Mock<DataDownloader>("", "", ""); + dl.Setup(m => m.DownloadWeatherPrediction()).Returns(data); + + JsonParser target = new JsonParser(dl.Object); + + List<WeatherInfo> pred = new List<WeatherInfo>(); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 0, 0, 0), 8, 1, 2, 60_000, 3)); + + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 3, 0, 0), 8, 1, 2, 60_000, 6)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 12, 0, 0), 8, 1, 2, 60_000, 6)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 18, 0, 0), 8, 1, 2, 60_000, 12)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 2, 6, 0, 0), 8, 1, 2, 60_000, 3)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 2, 9, 0, 0), 8, 1, 2, 60_000, 15)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 3, 0, 0, 0), 8, 1, 2, 60_000, 3)); + + pred.Add(new WeatherInfo(new DateTime(2000, 1, 3, 3, 0, 0), 8, 1, 2, 60_000, 3)); + + target.Predictions = pred; + + List<WeatherInfo> retVal = target.GetPredictionForTime(new DateTime(2000, 1, 1, 6, 0, 0), new DateTime(2000, 1, 3, 0, 0, 0)); + + Assert.AreEqual(6, retVal.Count); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 3, 0, 0), 8, 1, 2, 60_000, 6), retVal[0]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 12, 0, 0), 8, 1, 2, 60_000, 6), retVal[1]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 18, 0, 0), 8, 1, 2, 60_000, 12), retVal[2]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 2, 6, 0, 0), 8, 1, 2, 60_000, 3), retVal[3]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 2, 9, 0, 0), 8, 1, 2, 60_000, 15), retVal[4]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 3, 0, 0, 0), 8, 1, 2, 60_000, 3), retVal[5]); + } + + [TestMethod] + public void GetPredictionForTimeInvalidInput() + { + string data = ""; + Mock<DataDownloader> dl = new Mock<DataDownloader>("", "", ""); + dl.Setup(m => m.DownloadWeatherPrediction()).Returns(data); + + JsonParser target = new JsonParser(dl.Object); + + List<WeatherInfo> pred = new List<WeatherInfo>(); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 0, 0, 0), 8, 1, 2, 60_000, 3)); + + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 3, 0, 0), 8, 1, 2, 60_000, 6)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 12, 0, 0), 8, 1, 2, 60_000, 6)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 18, 0, 0), 8, 1, 2, 60_000, 12)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 2, 6, 0, 0), 8, 1, 2, 60_000, 3)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 2, 9, 0, 0), 8, 1, 2, 60_000, 15)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 3, 0, 0, 0), 8, 1, 2, 60_000, 3)); + + pred.Add(new WeatherInfo(new DateTime(2000, 1, 3, 3, 0, 0), 8, 1, 2, 60_000, 3)); + + target.Predictions = pred; + + List<WeatherInfo> retVal = target.GetPredictionForTime(new DateTime(2000, 1, 3, 0, 0, 0), new DateTime(2000, 1, 1, 6, 0, 0)); + Assert.AreEqual(null, retVal); + } + + [TestMethod] + public void GetPredictionForTimeAllTo() + { + string data = ""; + Mock<DataDownloader> dl = new Mock<DataDownloader>("", "", ""); + dl.Setup(m => m.DownloadWeatherPrediction()).Returns(data); + + JsonParser target = new JsonParser(dl.Object); + + List<WeatherInfo> pred = new List<WeatherInfo>(); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 0, 0, 0), 8, 1, 2, 60_000, 3)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 3, 0, 0), 8, 1, 2, 60_000, 6)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 12, 0, 0), 8, 1, 2, 60_000, 6)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 18, 0, 0), 8, 1, 2, 60_000, 12)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 2, 6, 0, 0), 8, 1, 2, 60_000, 3)); + + pred.Add(new WeatherInfo(new DateTime(2000, 1, 2, 9, 0, 0), 8, 1, 2, 60_000, 15)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 3, 0, 0, 0), 8, 1, 2, 60_000, 3)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 3, 3, 0, 0), 8, 1, 2, 60_000, 3)); + + target.Predictions = pred; + + List<WeatherInfo> retVal = target.GetPredictionForTime(DateTime.MinValue, new DateTime(2000, 1, 2, 6, 0, 0)); + + Assert.AreEqual(5, retVal.Count); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 0, 0, 0), 8, 1, 2, 60_000, 3), retVal[0]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 3, 0, 0), 8, 1, 2, 60_000, 6), retVal[1]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 12, 0, 0), 8, 1, 2, 60_000, 6), retVal[2]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 18, 0, 0), 8, 1, 2, 60_000, 12), retVal[3]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 2, 6, 0, 0), 8, 1, 2, 60_000, 3), retVal[4]); + } + + [TestMethod] + public void GetPredictionForTimeAllFrom() + { + string data = ""; + Mock<DataDownloader> dl = new Mock<DataDownloader>("", "", ""); + dl.Setup(m => m.DownloadWeatherPrediction()).Returns(data); + + JsonParser target = new JsonParser(dl.Object); + + List<WeatherInfo> pred = new List<WeatherInfo>(); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 0, 0, 0), 8, 1, 2, 60_000, 3)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 3, 0, 0), 8, 1, 2, 60_000, 3)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 6, 0, 0), 8, 1, 2, 60_000, 3)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 9, 0, 0), 8, 1, 2, 60_000, 3)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 12, 0, 0), 8, 1, 2, 60_000, 6)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 18, 0, 0), 8, 1, 2, 60_000, 12)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 2, 6, 0, 0), 8, 1, 2, 60_000, 3)); + + target.Predictions = pred; + + List<WeatherInfo> retVal = target.GetPredictionForTime(new DateTime(2000, 1, 1, 12, 0, 0), DateTime.MaxValue); + + Assert.AreEqual(3, retVal.Count); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 12, 0, 0), 8, 1, 2, 60_000, 6), retVal[0]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 18, 0, 0), 8, 1, 2, 60_000, 12), retVal[1]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 2, 6, 0, 0), 8, 1, 2, 60_000, 3), retVal[2]); + } + + public void GetPredictionForTimeAll() + { + + // TODO make an input file + string data = ""; + Mock<DataDownloader> dl = new Mock<DataDownloader>("", "", ""); + dl.Setup(m => m.DownloadWeatherPrediction()).Returns(data); + + JsonParser target = new JsonParser(dl.Object); + + List<WeatherInfo> pred = new List<WeatherInfo>(); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 0, 0, 0), 8, 1, 2, 60_000, 3)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 3, 0, 0), 8, 1, 2, 60_000, 6)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 12, 0, 0), 8, 1, 2, 60_000, 6)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 1, 18, 0, 0), 8, 1, 2, 60_000, 12)); + pred.Add(new WeatherInfo(new DateTime(2000, 1, 2, 6, 0, 0), 8, 1, 2, 60_000, 3)); + + target.Predictions = pred; + + List<WeatherInfo> retVal = target.GetPredictionForTime(DateTime.MinValue, DateTime.MaxValue); + + Assert.AreEqual(5, retVal.Count); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 0, 0, 0), 8, 1, 2, 60_000, 3), retVal[0]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 3, 0, 0), 8, 1, 2, 60_000, 6), retVal[1]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 12, 0, 0), 8, 1, 2, 60_000, 6), retVal[2]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 1, 18, 0, 0), 8, 1, 2, 60_000, 12), retVal[3]); + Assert.AreEqual(new WeatherInfo(new DateTime(2000, 1, 2, 6, 0, 0), 8, 1, 2, 60_000, 3), retVal[4]); + } + #endregion + } +} diff --git a/Server/TestProject/TestProject.csproj b/Server/TestProject/TestProject.csproj index f3a73e8c4f3eef0def0e507a109e6e8d101d7e43..c7574f6ff2bbaebdd58701dc98c89314d54ac3ce 100644 --- a/Server/TestProject/TestProject.csproj +++ b/Server/TestProject/TestProject.csproj @@ -63,7 +63,7 @@ </Reference> </ItemGroup> <ItemGroup> - <Compile Include="TestingParser.cs" /> + <Compile Include="ParserTests\TestingParser.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> diff --git a/Server/TestProject/TestingParser.cs b/Server/TestProject/TestingParser.cs deleted file mode 100644 index bf0cb90b6775d4cb19074c7fb221d215fe4b3855..0000000000000000000000000000000000000000 --- a/Server/TestProject/TestingParser.cs +++ /dev/null @@ -1,66 +0,0 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using ServerApp.Parser.Parsers; -using System.Collections.Generic; -using ServerApp.Parser.OutputInfo; - -namespace TestProject -{ - [TestClass] - public class TestingParser - { - [TestMethod] - public void AbstactClassTest() - { - IDataParser p = new DataParser(null); - List<ActivityInfo> aa = p.AttendanceList; - List<WeatherInfo> wa = p.WeatherList; - - DataParser pp = (DataParser)p; - List<ActivityInfo> ap = pp.AttendanceList; - List<WeatherInfo> wp = pp.WeatherList; - - Assert.AreEqual(aa, ap); - Assert.AreEqual(wa, wp); - } - - [TestMethod] - public void MergeListsNull() - { - DataParser target = new DataParser(null); - PrivateObject obj = new PrivateObject(target); - - List<ActivityInfo> jis = null; - List<ActivityInfo> pc = null; - - List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc); - Assert.AreEqual(0, retVal.Count); - } - - [TestMethod] - public void MergeListsJisNull() - { - DataParser target = new DataParser(null); - PrivateObject obj = new PrivateObject(target); - - List<ActivityInfo> jis = null; - List<ActivityInfo> pc = new List<ActivityInfo>(); - - List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc); - Assert.AreEqual(pc, retVal); - } - - [TestMethod] - public void MergeListsPcNull() - { - DataParser target = new DataParser(null); - PrivateObject obj = new PrivateObject(target); - - List<ActivityInfo> jis = new List<ActivityInfo>(); - List<ActivityInfo> pc = null; - - List<ActivityInfo> retVal = (List<ActivityInfo>)obj.Invoke("MergeAttendance", jis, pc); - Assert.AreEqual(jis, retVal); - } - } -} diff --git a/TextureEditing/.vs/TextureEditing/DesignTimeBuild/.dtbcache.v2 b/TextureEditing/.vs/TextureEditing/DesignTimeBuild/.dtbcache.v2 new file mode 100644 index 0000000000000000000000000000000000000000..04ceab7c20fda8acf71f42abba6a8cf21f4ce4e5 Binary files /dev/null and b/TextureEditing/.vs/TextureEditing/DesignTimeBuild/.dtbcache.v2 differ diff --git a/TextureEditing/.vs/TextureEditing/v16/.suo b/TextureEditing/.vs/TextureEditing/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..519a72794193ed24a16d3ad57f30f640c40e815a Binary files /dev/null and b/TextureEditing/.vs/TextureEditing/v16/.suo differ diff --git a/TextureEditing/bin/Debug/net5.0/Microsoft.Win32.SystemEvents.dll b/TextureEditing/bin/Debug/net5.0/Microsoft.Win32.SystemEvents.dll new file mode 100644 index 0000000000000000000000000000000000000000..d62f3335bb75e1ac752e8705089fdd11a7d74a07 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/Microsoft.Win32.SystemEvents.dll differ diff --git a/TextureEditing/bin/Debug/net5.0/System.Drawing.Common.dll b/TextureEditing/bin/Debug/net5.0/System.Drawing.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..6ab3e30f67b4bba3a8d7c406dc087a29a2462d81 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/System.Drawing.Common.dll differ diff --git a/TextureEditing/bin/Debug/net5.0/TextureEditing.deps.json b/TextureEditing/bin/Debug/net5.0/TextureEditing.deps.json new file mode 100644 index 0000000000000000000000000000000000000000..af1786f34806945a0f0475befd17a79b9955fad2 --- /dev/null +++ b/TextureEditing/bin/Debug/net5.0/TextureEditing.deps.json @@ -0,0 +1,92 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v5.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v5.0": { + "TextureEditing/1.0.0": { + "dependencies": { + "System.Drawing.Common": "5.0.2" + }, + "runtime": { + "TextureEditing.dll": {} + } + }, + "Microsoft.NETCore.Platforms/5.0.0": {}, + "Microsoft.Win32.SystemEvents/5.0.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "5.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.20.51904" + } + }, + "runtimeTargets": { + "runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll": { + "rid": "win", + "assetType": "runtime", + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.20.51904" + } + } + }, + "System.Drawing.Common/5.0.2": { + "dependencies": { + "Microsoft.Win32.SystemEvents": "5.0.0" + }, + "runtime": { + "lib/netcoreapp3.0/System.Drawing.Common.dll": { + "assemblyVersion": "5.0.0.2", + "fileVersion": "5.0.421.11614" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll": { + "rid": "unix", + "assetType": "runtime", + "assemblyVersion": "5.0.0.2", + "fileVersion": "5.0.421.11614" + }, + "runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll": { + "rid": "win", + "assetType": "runtime", + "assemblyVersion": "5.0.0.2", + "fileVersion": "5.0.421.11614" + } + } + } + } + }, + "libraries": { + "TextureEditing/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.NETCore.Platforms/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==", + "path": "microsoft.netcore.platforms/5.0.0", + "hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512" + }, + "Microsoft.Win32.SystemEvents/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Bh6blKG8VAKvXiLe2L+sEsn62nc1Ij34MrNxepD2OCrS5cpCwQa9MeLyhVQPQ/R4Wlzwuy6wMK8hLb11QPDRsQ==", + "path": "microsoft.win32.systemevents/5.0.0", + "hashPath": "microsoft.win32.systemevents.5.0.0.nupkg.sha512" + }, + "System.Drawing.Common/5.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rvr/M1WPf24ljpvvrVd74+NdjRUJu1bBkspkZcnzSZnmAUQWSvanlQ0k/hVHk+cHufZbZfu7vOh/vYc0q5Uu/A==", + "path": "system.drawing.common/5.0.2", + "hashPath": "system.drawing.common.5.0.2.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/TextureEditing/bin/Debug/net5.0/TextureEditing.dll b/TextureEditing/bin/Debug/net5.0/TextureEditing.dll new file mode 100644 index 0000000000000000000000000000000000000000..4246ccdcd185679b36b1223e8aa833be5f691a9d Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/TextureEditing.dll differ diff --git a/TextureEditing/bin/Debug/net5.0/TextureEditing.exe b/TextureEditing/bin/Debug/net5.0/TextureEditing.exe new file mode 100644 index 0000000000000000000000000000000000000000..f74f3d9aea248c55ce4cd271e1a0151f6488a746 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/TextureEditing.exe differ diff --git a/TextureEditing/bin/Debug/net5.0/TextureEditing.pdb b/TextureEditing/bin/Debug/net5.0/TextureEditing.pdb new file mode 100644 index 0000000000000000000000000000000000000000..b0270eb1519659dbcd68e0befadf0f6e9236b491 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/TextureEditing.pdb differ diff --git a/TextureEditing/bin/Debug/net5.0/TextureEditing.runtimeconfig.dev.json b/TextureEditing/bin/Debug/net5.0/TextureEditing.runtimeconfig.dev.json new file mode 100644 index 0000000000000000000000000000000000000000..d80adcabed99a5ffc5a5c4e90c0050255bef6518 --- /dev/null +++ b/TextureEditing/bin/Debug/net5.0/TextureEditing.runtimeconfig.dev.json @@ -0,0 +1,9 @@ +{ + "runtimeOptions": { + "additionalProbingPaths": [ + "C:\\Users\\Daemon\\.dotnet\\store\\|arch|\\|tfm|", + "C:\\Users\\Daemon\\.nuget\\packages", + "D:\\Instalace\\VS\\Shared\\NuGetPackages" + ] + } +} \ No newline at end of file diff --git a/TextureEditing/bin/Debug/net5.0/TextureEditing.runtimeconfig.json b/TextureEditing/bin/Debug/net5.0/TextureEditing.runtimeconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..a8e7e82874bf4919e97618aed2ac5a89a5c0faa6 --- /dev/null +++ b/TextureEditing/bin/Debug/net5.0/TextureEditing.runtimeconfig.json @@ -0,0 +1,9 @@ +{ + "runtimeOptions": { + "tfm": "net5.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "5.0.0" + } + } +} \ No newline at end of file diff --git a/TextureEditing/bin/Debug/net5.0/TextureEditing.zip b/TextureEditing/bin/Debug/net5.0/TextureEditing.zip new file mode 100644 index 0000000000000000000000000000000000000000..082307ffac9f37b49836ba52fe8e2a3afbb76777 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/TextureEditing.zip differ diff --git a/TextureEditing/bin/Debug/net5.0/data/CIV.png b/TextureEditing/bin/Debug/net5.0/data/CIV.png new file mode 100644 index 0000000000000000000000000000000000000000..1d27eaf014ee6d25cbeac139be4b9df12d91c87f Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/data/CIV.png differ diff --git a/TextureEditing/bin/Debug/net5.0/data/FAV.png b/TextureEditing/bin/Debug/net5.0/data/FAV.png new file mode 100644 index 0000000000000000000000000000000000000000..58222bd021ade8f519692ed228496768031bdfe3 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/data/FAV.png differ diff --git a/TextureEditing/bin/Debug/net5.0/data/FDU.png b/TextureEditing/bin/Debug/net5.0/data/FDU.png new file mode 100644 index 0000000000000000000000000000000000000000..74e685df89104c0ba8a9b28e21eb115805753699 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/data/FDU.png differ diff --git a/TextureEditing/bin/Debug/net5.0/data/FEL.png b/TextureEditing/bin/Debug/net5.0/data/FEL.png new file mode 100644 index 0000000000000000000000000000000000000000..0140f02298dbf1dd38b683b3b72e99ec7d0b95f0 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/data/FEL.png differ diff --git a/TextureEditing/bin/Debug/net5.0/data/FST+FEK.png b/TextureEditing/bin/Debug/net5.0/data/FST+FEK.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5ad46f681fd74ce8d501a13e3e2cadfd90fd75 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/data/FST+FEK.png differ diff --git a/TextureEditing/bin/Debug/net5.0/data/LIB.png b/TextureEditing/bin/Debug/net5.0/data/LIB.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c350644e860c48b399934192e461c17cfb063d Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/data/LIB.png differ diff --git a/TextureEditing/bin/Debug/net5.0/data/MENZA.png b/TextureEditing/bin/Debug/net5.0/data/MENZA.png new file mode 100644 index 0000000000000000000000000000000000000000..49b69fe37d8ff71129de7aeafb4f9dbce100a193 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/data/MENZA.png differ diff --git a/TextureEditing/bin/Debug/net5.0/data/REK.png b/TextureEditing/bin/Debug/net5.0/data/REK.png new file mode 100644 index 0000000000000000000000000000000000000000..d0aa400064bc91fa7d222d912a5dec41f04f4c32 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/data/REK.png differ diff --git a/TextureEditing/bin/Debug/net5.0/output/CIV.png b/TextureEditing/bin/Debug/net5.0/output/CIV.png new file mode 100644 index 0000000000000000000000000000000000000000..ca90239aea7e4377a9f2d9e4c488c03a27865964 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/output/CIV.png differ diff --git a/TextureEditing/bin/Debug/net5.0/output/FAV.png b/TextureEditing/bin/Debug/net5.0/output/FAV.png new file mode 100644 index 0000000000000000000000000000000000000000..adf071f24e49c48ea1710c4779c63ea24bc5ef98 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/output/FAV.png differ diff --git a/TextureEditing/bin/Debug/net5.0/output/FDU.png b/TextureEditing/bin/Debug/net5.0/output/FDU.png new file mode 100644 index 0000000000000000000000000000000000000000..f4632a0d8e1a6a6b1d027e1a526e8849c6116491 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/output/FDU.png differ diff --git a/TextureEditing/bin/Debug/net5.0/output/FEL.png b/TextureEditing/bin/Debug/net5.0/output/FEL.png new file mode 100644 index 0000000000000000000000000000000000000000..b9444015216a9cfa60f897f8a55edcec5f3a84e7 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/output/FEL.png differ diff --git a/TextureEditing/bin/Debug/net5.0/output/FST+FEK.png b/TextureEditing/bin/Debug/net5.0/output/FST+FEK.png new file mode 100644 index 0000000000000000000000000000000000000000..c4831bab919490a9436d6818086dc7cc83657d80 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/output/FST+FEK.png differ diff --git a/TextureEditing/bin/Debug/net5.0/output/LIB.png b/TextureEditing/bin/Debug/net5.0/output/LIB.png new file mode 100644 index 0000000000000000000000000000000000000000..2e404be19f88cb7e3641fd119255f4823f52f8a6 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/output/LIB.png differ diff --git a/TextureEditing/bin/Debug/net5.0/output/MENZA.png b/TextureEditing/bin/Debug/net5.0/output/MENZA.png new file mode 100644 index 0000000000000000000000000000000000000000..388b9ce602be482777cf0360309b65818bc0054c Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/output/MENZA.png differ diff --git a/TextureEditing/bin/Debug/net5.0/output/REK.png b/TextureEditing/bin/Debug/net5.0/output/REK.png new file mode 100644 index 0000000000000000000000000000000000000000..3a773a2acb01ad366b0224a0f2bbe4ee1172df14 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/output/REK.png differ diff --git a/TextureEditing/bin/Debug/net5.0/output/output.csv b/TextureEditing/bin/Debug/net5.0/output/output.csv new file mode 100644 index 0000000000000000000000000000000000000000..3881a6d388b37b93e6fd1c2260421656f45b5c14 --- /dev/null +++ b/TextureEditing/bin/Debug/net5.0/output/output.csv @@ -0,0 +1,8 @@ +CIV.png;57.287598;57.359966;49.24623;51.86722 +FAV.png;49.70703;78.37603;55.79119;50.74627 +FDU.png;31.066895;54.99349;44.702843;50.73314 +FEL.png;34.375;38.276165;52.941177;49.06015 +FST+FEK.png;36.8042;51.693443;47.44898;46.205357 +LIB.png;56.82373;60.92054;47.22222;59.360733 +MENZA.png;54.284668;37.342598;46.785713;47.482014 +REK.png;50.12207;36.60443;49.450546;50.549454 diff --git a/TextureEditing/bin/Debug/net5.0/ref/TextureEditing.dll b/TextureEditing/bin/Debug/net5.0/ref/TextureEditing.dll new file mode 100644 index 0000000000000000000000000000000000000000..1df0c244cef950e79af917708c807d489745f455 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/ref/TextureEditing.dll differ diff --git a/TextureEditing/bin/Debug/net5.0/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll b/TextureEditing/bin/Debug/net5.0/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..8b95164b1f805db8bcaccffabe48a5adc13db0d7 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll differ diff --git a/TextureEditing/bin/Debug/net5.0/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll b/TextureEditing/bin/Debug/net5.0/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll new file mode 100644 index 0000000000000000000000000000000000000000..b5aa0c4cd3e2d8c425138dde02b8f77434979697 Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll differ diff --git a/TextureEditing/bin/Debug/net5.0/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll b/TextureEditing/bin/Debug/net5.0/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..b80b430426d1b49bb4d79b271fd640c29aad271d Binary files /dev/null and b/TextureEditing/bin/Debug/net5.0/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll differ diff --git a/TextureEditing/obj/Debug/net5.0/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs b/TextureEditing/obj/Debug/net5.0/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs new file mode 100644 index 0000000000000000000000000000000000000000..2f7e5ec5afa156f8313c6a17e8a80a25246858f5 --- /dev/null +++ b/TextureEditing/obj/Debug/net5.0/.NETCoreApp,Version=v5.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// <autogenerated /> +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v5.0", FrameworkDisplayName = "")] diff --git a/TextureEditing/obj/Debug/net5.0/TextureEditing.AssemblyInfo.cs b/TextureEditing/obj/Debug/net5.0/TextureEditing.AssemblyInfo.cs new file mode 100644 index 0000000000000000000000000000000000000000..bd2ef732753ea5558f3f417f005b891375287079 --- /dev/null +++ b/TextureEditing/obj/Debug/net5.0/TextureEditing.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("TextureEditing")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("TextureEditing")] +[assembly: System.Reflection.AssemblyTitleAttribute("TextureEditing")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/TextureEditing/obj/Debug/net5.0/TextureEditing.AssemblyInfoInputs.cache b/TextureEditing/obj/Debug/net5.0/TextureEditing.AssemblyInfoInputs.cache new file mode 100644 index 0000000000000000000000000000000000000000..b441f6fb24448bbc285f34be204061844af8e219 --- /dev/null +++ b/TextureEditing/obj/Debug/net5.0/TextureEditing.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +a034e858309ca5736878c994bb335596cdb135cd diff --git a/TextureEditing/obj/Debug/net5.0/TextureEditing.GeneratedMSBuildEditorConfig.editorconfig b/TextureEditing/obj/Debug/net5.0/TextureEditing.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..d7e29835d585d70c36f9ec99b31f5a63a0912174 --- /dev/null +++ b/TextureEditing/obj/Debug/net5.0/TextureEditing.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,8 @@ +is_global = true +build_property.TargetFramework = net5.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.PublishSingleFile = +build_property.IncludeAllContentForSelfExtract = +build_property._SupportedPlatformList = Android,iOS,Linux,macOS,Windows diff --git a/TextureEditing/obj/Debug/net5.0/TextureEditing.assets.cache b/TextureEditing/obj/Debug/net5.0/TextureEditing.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..e3a919825474c06603b073f5dca783439eedbf94 Binary files /dev/null and b/TextureEditing/obj/Debug/net5.0/TextureEditing.assets.cache differ diff --git a/TextureEditing/obj/Debug/net5.0/TextureEditing.csproj.CopyComplete b/TextureEditing/obj/Debug/net5.0/TextureEditing.csproj.CopyComplete new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/TextureEditing/obj/Debug/net5.0/TextureEditing.csproj.CoreCompileInputs.cache b/TextureEditing/obj/Debug/net5.0/TextureEditing.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000000000000000000000000000000000000..be2a405e34e1fc01fc746638e0f5e5fb5e95a7d6 --- /dev/null +++ b/TextureEditing/obj/Debug/net5.0/TextureEditing.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +a810736e97c3df7a632e96bee5699fa73ad790a8 diff --git a/TextureEditing/obj/Debug/net5.0/TextureEditing.csproj.FileListAbsolute.txt b/TextureEditing/obj/Debug/net5.0/TextureEditing.csproj.FileListAbsolute.txt new file mode 100644 index 0000000000000000000000000000000000000000..ebe06b21331577493038997176f78c9444e1bad7 --- /dev/null +++ b/TextureEditing/obj/Debug/net5.0/TextureEditing.csproj.FileListAbsolute.txt @@ -0,0 +1,30 @@ +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\TextureEditing.exe +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\TextureEditing.deps.json +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\TextureEditing.runtimeconfig.json +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\TextureEditing.runtimeconfig.dev.json +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\TextureEditing.dll +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\ref\TextureEditing.dll +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\TextureEditing.pdb +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\obj\Debug\net5.0\TextureEditing.csprojAssemblyReference.cache +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\obj\Debug\net5.0\TextureEditing.GeneratedMSBuildEditorConfig.editorconfig +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\obj\Debug\net5.0\TextureEditing.AssemblyInfoInputs.cache +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\obj\Debug\net5.0\TextureEditing.AssemblyInfo.cs +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\obj\Debug\net5.0\TextureEditing.csproj.CoreCompileInputs.cache +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\obj\Debug\net5.0\TextureEditing.dll +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\obj\Debug\net5.0\ref\TextureEditing.dll +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\obj\Debug\net5.0\TextureEditing.pdb +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\obj\Debug\net5.0\TextureEditing.genruntimeconfig.cache +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\Microsoft.Win32.SystemEvents.dll +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\System.Drawing.Common.dll +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\runtimes\win\lib\netcoreapp3.0\Microsoft.Win32.SystemEvents.dll +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\runtimes\unix\lib\netcoreapp3.0\System.Drawing.Common.dll +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\runtimes\win\lib\netcoreapp3.0\System.Drawing.Common.dll +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\obj\Debug\net5.0\TextureEditing.csproj.CopyComplete +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\data\CIV.png +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\data\FAV.png +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\data\FDU.png +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\data\FEL.png +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\data\FST+FEK.png +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\data\LIB.png +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\data\MENZA.png +D:\moje\school\04\aswi\sem\open data\Develop\aswi2021tri-musketyri\aswi2021tri-musketyri\TextureEditing\bin\Debug\net5.0\data\REK.png diff --git a/TextureEditing/obj/Debug/net5.0/TextureEditing.csprojAssemblyReference.cache b/TextureEditing/obj/Debug/net5.0/TextureEditing.csprojAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..d1c0ec53f86bb9e3e030093bebeb426e2b47de3e Binary files /dev/null and b/TextureEditing/obj/Debug/net5.0/TextureEditing.csprojAssemblyReference.cache differ diff --git a/TextureEditing/obj/Debug/net5.0/TextureEditing.dll b/TextureEditing/obj/Debug/net5.0/TextureEditing.dll new file mode 100644 index 0000000000000000000000000000000000000000..4246ccdcd185679b36b1223e8aa833be5f691a9d Binary files /dev/null and b/TextureEditing/obj/Debug/net5.0/TextureEditing.dll differ diff --git a/TextureEditing/obj/Debug/net5.0/TextureEditing.genruntimeconfig.cache b/TextureEditing/obj/Debug/net5.0/TextureEditing.genruntimeconfig.cache new file mode 100644 index 0000000000000000000000000000000000000000..2daf8a687506ecbf78d927ee58a9db7199d721f0 --- /dev/null +++ b/TextureEditing/obj/Debug/net5.0/TextureEditing.genruntimeconfig.cache @@ -0,0 +1 @@ +f7f8983b33080f7ed179e61676b834a08b448cf3 diff --git a/TextureEditing/obj/Debug/net5.0/TextureEditing.pdb b/TextureEditing/obj/Debug/net5.0/TextureEditing.pdb new file mode 100644 index 0000000000000000000000000000000000000000..b0270eb1519659dbcd68e0befadf0f6e9236b491 Binary files /dev/null and b/TextureEditing/obj/Debug/net5.0/TextureEditing.pdb differ diff --git a/TextureEditing/obj/Debug/net5.0/apphost.exe b/TextureEditing/obj/Debug/net5.0/apphost.exe new file mode 100644 index 0000000000000000000000000000000000000000..f74f3d9aea248c55ce4cd271e1a0151f6488a746 Binary files /dev/null and b/TextureEditing/obj/Debug/net5.0/apphost.exe differ diff --git a/TextureEditing/obj/Debug/net5.0/ref/TextureEditing.dll b/TextureEditing/obj/Debug/net5.0/ref/TextureEditing.dll new file mode 100644 index 0000000000000000000000000000000000000000..1df0c244cef950e79af917708c807d489745f455 Binary files /dev/null and b/TextureEditing/obj/Debug/net5.0/ref/TextureEditing.dll differ diff --git a/TextureEditing/obj/TextureEditing.csproj.nuget.dgspec.json b/TextureEditing/obj/TextureEditing.csproj.nuget.dgspec.json new file mode 100644 index 0000000000000000000000000000000000000000..c93e968804199fe4f6d1e45478f10c5b3d222d7f --- /dev/null +++ b/TextureEditing/obj/TextureEditing.csproj.nuget.dgspec.json @@ -0,0 +1,72 @@ +{ + "format": 1, + "restore": { + "D:\\moje\\school\\04\\aswi\\sem\\open data\\Develop\\aswi2021tri-musketyri\\aswi2021tri-musketyri\\TextureEditing\\TextureEditing.csproj": {} + }, + "projects": { + "D:\\moje\\school\\04\\aswi\\sem\\open data\\Develop\\aswi2021tri-musketyri\\aswi2021tri-musketyri\\TextureEditing\\TextureEditing.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\moje\\school\\04\\aswi\\sem\\open data\\Develop\\aswi2021tri-musketyri\\aswi2021tri-musketyri\\TextureEditing\\TextureEditing.csproj", + "projectName": "TextureEditing", + "projectPath": "D:\\moje\\school\\04\\aswi\\sem\\open data\\Develop\\aswi2021tri-musketyri\\aswi2021tri-musketyri\\TextureEditing\\TextureEditing.csproj", + "packagesPath": "C:\\Users\\Daemon\\.nuget\\packages\\", + "outputPath": "D:\\moje\\school\\04\\aswi\\sem\\open data\\Develop\\aswi2021tri-musketyri\\aswi2021tri-musketyri\\TextureEditing\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "D:\\Instalace\\VS\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Daemon\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net5.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net5.0": { + "targetAlias": "net5.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net5.0": { + "targetAlias": "net5.0", + "dependencies": { + "System.Drawing.Common": { + "target": "Package", + "version": "[5.0.2, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.201\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/TextureEditing/obj/TextureEditing.csproj.nuget.g.props b/TextureEditing/obj/TextureEditing.csproj.nuget.g.props new file mode 100644 index 0000000000000000000000000000000000000000..4721039fe7c616886aa54ba4d6dbbc3afd091838 --- /dev/null +++ b/TextureEditing/obj/TextureEditing.csproj.nuget.g.props @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> + <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess> + <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool> + <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile> + <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot> + <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Daemon\.nuget\packages\;D:\Instalace\VS\Shared\NuGetPackages</NuGetPackageFolders> + <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle> + <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.9.0</NuGetToolVersion> + </PropertyGroup> + <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> + <SourceRoot Include="C:\Users\Daemon\.nuget\packages\" /> + <SourceRoot Include="D:\Instalace\VS\Shared\NuGetPackages\" /> + </ItemGroup> + <PropertyGroup> + <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/TextureEditing/obj/TextureEditing.csproj.nuget.g.targets b/TextureEditing/obj/TextureEditing.csproj.nuget.g.targets new file mode 100644 index 0000000000000000000000000000000000000000..53cfaa19b16f3769b2bfc33db3b5c0053c16fdba --- /dev/null +++ b/TextureEditing/obj/TextureEditing.csproj.nuget.g.targets @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects> + </PropertyGroup> +</Project> \ No newline at end of file diff --git a/TextureEditing/obj/project.assets.json b/TextureEditing/obj/project.assets.json new file mode 100644 index 0000000000000000000000000000000000000000..c4a5c27e4b8fedb3078cebe3433c71cb6d8c198a --- /dev/null +++ b/TextureEditing/obj/project.assets.json @@ -0,0 +1,219 @@ +{ + "version": 3, + "targets": { + "net5.0": { + "Microsoft.NETCore.Platforms/5.0.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.Win32.SystemEvents/5.0.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "5.0.0" + }, + "compile": { + "ref/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Drawing.Common/5.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Win32.SystemEvents": "5.0.0" + }, + "compile": { + "ref/netcoreapp3.0/System.Drawing.Common.dll": {} + }, + "runtime": { + "lib/netcoreapp3.0/System.Drawing.Common.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll": { + "assetType": "runtime", + "rid": "win" + } + } + } + } + }, + "libraries": { + "Microsoft.NETCore.Platforms/5.0.0": { + "sha512": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==", + "type": "package", + "path": "microsoft.netcore.platforms/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netstandard1.0/_._", + "microsoft.netcore.platforms.5.0.0.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", + "runtime.json", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.Win32.SystemEvents/5.0.0": { + "sha512": "Bh6blKG8VAKvXiLe2L+sEsn62nc1Ij34MrNxepD2OCrS5cpCwQa9MeLyhVQPQ/R4Wlzwuy6wMK8hLb11QPDRsQ==", + "type": "package", + "path": "microsoft.win32.systemevents/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/Microsoft.Win32.SystemEvents.dll", + "lib/net461/Microsoft.Win32.SystemEvents.xml", + "lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll", + "lib/netstandard2.0/Microsoft.Win32.SystemEvents.xml", + "microsoft.win32.systemevents.5.0.0.nupkg.sha512", + "microsoft.win32.systemevents.nuspec", + "ref/net461/Microsoft.Win32.SystemEvents.dll", + "ref/net461/Microsoft.Win32.SystemEvents.xml", + "ref/netstandard2.0/Microsoft.Win32.SystemEvents.dll", + "ref/netstandard2.0/Microsoft.Win32.SystemEvents.xml", + "runtimes/win/lib/netcoreapp2.0/Microsoft.Win32.SystemEvents.dll", + "runtimes/win/lib/netcoreapp2.0/Microsoft.Win32.SystemEvents.xml", + "runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll", + "runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.xml", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Drawing.Common/5.0.2": { + "sha512": "rvr/M1WPf24ljpvvrVd74+NdjRUJu1bBkspkZcnzSZnmAUQWSvanlQ0k/hVHk+cHufZbZfu7vOh/vYc0q5Uu/A==", + "type": "package", + "path": "system.drawing.common/5.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Drawing.Common.dll", + "lib/netcoreapp3.0/System.Drawing.Common.dll", + "lib/netcoreapp3.0/System.Drawing.Common.xml", + "lib/netstandard2.0/System.Drawing.Common.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net461/System.Drawing.Common.dll", + "ref/netcoreapp3.0/System.Drawing.Common.dll", + "ref/netcoreapp3.0/System.Drawing.Common.xml", + "ref/netstandard2.0/System.Drawing.Common.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netcoreapp2.0/System.Drawing.Common.dll", + "runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll", + "runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.xml", + "runtimes/win/lib/netcoreapp2.0/System.Drawing.Common.dll", + "runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll", + "runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.xml", + "system.drawing.common.5.0.2.nupkg.sha512", + "system.drawing.common.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + } + }, + "projectFileDependencyGroups": { + "net5.0": [ + "System.Drawing.Common >= 5.0.2" + ] + }, + "packageFolders": { + "C:\\Users\\Daemon\\.nuget\\packages\\": {}, + "D:\\Instalace\\VS\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\moje\\school\\04\\aswi\\sem\\open data\\Develop\\aswi2021tri-musketyri\\aswi2021tri-musketyri\\TextureEditing\\TextureEditing.csproj", + "projectName": "TextureEditing", + "projectPath": "D:\\moje\\school\\04\\aswi\\sem\\open data\\Develop\\aswi2021tri-musketyri\\aswi2021tri-musketyri\\TextureEditing\\TextureEditing.csproj", + "packagesPath": "C:\\Users\\Daemon\\.nuget\\packages\\", + "outputPath": "D:\\moje\\school\\04\\aswi\\sem\\open data\\Develop\\aswi2021tri-musketyri\\aswi2021tri-musketyri\\TextureEditing\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "D:\\Instalace\\VS\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Daemon\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net5.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net5.0": { + "targetAlias": "net5.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net5.0": { + "targetAlias": "net5.0", + "dependencies": { + "System.Drawing.Common": { + "target": "Package", + "version": "[5.0.2, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\5.0.201\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/TextureEditing/obj/project.nuget.cache b/TextureEditing/obj/project.nuget.cache new file mode 100644 index 0000000000000000000000000000000000000000..4d4aecee8d26b42a8e6c0f09679e523f41936607 --- /dev/null +++ b/TextureEditing/obj/project.nuget.cache @@ -0,0 +1,12 @@ +{ + "version": 2, + "dgSpecHash": "PbHx0EN0q80PFjgXOEN544QPt8IiL8YyGrk5uz82rCO8saJ6wJprm+/TdpnxpbYhQxQqVduh+VA4aD37VGgsBQ==", + "success": true, + "projectFilePath": "D:\\moje\\school\\04\\aswi\\sem\\open data\\Develop\\aswi2021tri-musketyri\\aswi2021tri-musketyri\\TextureEditing\\TextureEditing.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Daemon\\.nuget\\packages\\microsoft.netcore.platforms\\5.0.0\\microsoft.netcore.platforms.5.0.0.nupkg.sha512", + "C:\\Users\\Daemon\\.nuget\\packages\\microsoft.win32.systemevents\\5.0.0\\microsoft.win32.systemevents.5.0.0.nupkg.sha512", + "C:\\Users\\Daemon\\.nuget\\packages\\system.drawing.common\\5.0.2\\system.drawing.common.5.0.2.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file