static Byte[] UpdateScenarioFile(FileReader reader, String jsonpath, List <TextItem> stringtableitems) { Assert.IsNotNull(reader, nameof(reader)); Assert.IsValidString(jsonpath, nameof(jsonpath)); Assert.IsNotNull(stringtableitems, nameof(stringtableitems)); var scenariofile = new ScenarioFile(reader); var textitems = JsonTextItemFileIO.ReadFromFile(jsonpath); var scenariotext_index = 0; scenariofile.VisitOperands(x => x.Type == Bytecode.OperandType.String, x => new Bytecode.Operand(Bytecode.OperandType.String, textitems[scenariotext_index++].GetBestText())); var stringtable = scenariofile.GetStringTable(); for (var i = 0; i != stringtable.Count; ++i) { var textitem = stringtableitems.FirstOrDefault(x => x.Text == stringtable[i]); if (textitem != null && textitem.Translation != "") { stringtable[i] = textitem.Translation; } } scenariofile.UpdateStringTable(stringtable); scenariofile.Fix(); return(scenariofile.Write(reader.Encoding)); }
public MainWindow ResolveMainWindow(string[] args) { MainWindow client = new MainWindow(); ScenarioFile dairyScenario = new ScenarioFile(); ScenarioFile fieldScenario = new ScenarioFile(); ScenarioDefaults defaults = new ScenarioDefaults(); //string pathToWeatherDatabase = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Assets", "Database", "Weather"); string pathToWeatherDatabase = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "DairyCropSyst", "Database", "Weather"); WeatherGrabber grabber = new WeatherGrabber(pathToWeatherDatabase); ScenarioReader reader = new ScenarioReader(dairyScenario, fieldScenario); ScenarioWriter writer = new ScenarioWriter(dairyScenario, fieldScenario, defaults, grabber); ScenarioViewModel context = new ScenarioViewModel(reader, writer); client.DataContext = context; if (args.Length == 1) { tryOpenFile(args[0], context); } return(client); }
public void Write_SimpleScenario_WritesAllValues() { // Arrange var i = new Injector(); var s = i.GetSimpleScenario(); Directory.CreateDirectory(scenDirPath); var field = new ScenarioFile(); var dairy = new ScenarioFile(); var scenDefaults = new ScenarioDefaults(); var grabber = new WeatherGrabber(@"Assets\Database\Weather"); var sut = new ScenarioWriter(dairy, field, scenDefaults, grabber); // Act sut.Write(s, scenDirPath); // Assert bool filesMatch = checkFilesMatch( Path.Combine(scenDirPath, ".NIFA_dairy_scenario").ToString(), @"Assets\simpleScenario.NIFA_dairy_scenario"); Assert.IsTrue(filesMatch); }
public void Clear_SectionNotPresent_ReturnsEmpty() { // Arrange ScenarioFile sut = new ScenarioFile(); string sect = "not-a-section"; // Act var actual = sut.Clear(sect); // Assert Assert.AreEqual(0, actual.Count); }
public void Load_InvalidPath_ThrowsException() { // Arrange var field = new ScenarioFile(); var dairy = new ScenarioFile(); var sut = new ScenarioReader(field, dairy); // Act sut.Load(""); // Assert - Expect exception }
public ScenarioEditorViewModel(EdataContentFile file, EdataFileViewModel ownerVm) { OwnerFile = file; EdataFileViewModel = ownerVm; var reader = new ScenarioReader(); ScenarioFile = reader.Read(ownerVm.EdataManager.GetRawData(file)); EditGameModeLogicCommand = new ActionCommand(EditGameModeLogicExecute); ZoneEditorCommand = new ActionCommand(ZoneEditorExecute); SaveCommand = new ActionCommand(SaveExecute); }
static Tuple <List <String>, List <String> > ReadScenarioFile(FileReader reader) { Assert.IsNotNull(reader, nameof(reader)); var scenariofile = new ScenarioFile(reader); var stringlist = new List <String>(); scenariofile.VisitOperands(x => x.Type == Bytecode.OperandType.String, x => stringlist.Add(x.GetValue <String>())); var stringtable = scenariofile.GetStringTable(); return(Tuple.Create(stringlist, stringtable)); }
public void ReadComplexEditWriteSimple() { // Arrange ScenarioFile dairy = new ScenarioFile(); ScenarioFile field = new ScenarioFile(); ScenarioDefaults d = new ScenarioDefaults(); WeatherGrabber g = new WeatherGrabber(@"Assets\Database\Weather"); string readPath = @"Assets\complexScenario.NIFA_dairy_scenario"; string writePath = @"Assets\IntegrationTest"; string comparePath = @"Assets\simpleScenario.NIFA_dairy_scenario"; ScenarioReader r = new ScenarioReader(dairy, field); ScenarioWriter w = new ScenarioWriter(dairy, field, d, g); Directory.CreateDirectory(writePath); // Act r.Load(readPath); Scenario scenario = r.Parse(); scenario.Description = ""; scenario.Cow.BodyMass_kg = 635; scenario.Cow.DryMatterIntake_kg_d = 24; scenario.Cow.MilkProduction_kg_d = 34; scenario.Cow.CrudeProteinDiet_percent = 17.6; scenario.Cow.StarchDiet_percent = 12.83; scenario.Cow.AcidDetergentFiberDiet_percent = 26.08; scenario.Barn.ManureAlleyArea_m2 = 3000; scenario.Barn.NumberCows_cnt = 1000; scenario.Lagoon.SurfaceArea_m2 = 142250; scenario.Lagoon.VolumeMax_m3 = 519213; scenario.Fertigation.Enabled = false; scenario.Field.Id = "field"; scenario.AnaerobicDigester.Enabled = false; scenario.FineSeparator.Enabled = false; scenario.NutrientRecovery.Enabled = false; scenario.ReceiveOffFarmBiomass.Enabled = false; w.Write(scenario, writePath); // Assert Assert.IsTrue( checkFilesMatch( comparePath, Path.Combine(writePath, ".NIFA_dairy_scenario"))); }
public void LoadParse_SimpleScenario_ParsesCorrectly() { /// Arrange var dairy = new ScenarioFile(); var field = new ScenarioFile(); var reader = new ScenarioReader(dairy, field); var sut = new Scenario(); var injector = new Injector(); var s = injector.GetSimpleScenario(); /// Act reader.Load(@"Assets\simpleScenario.NIFA_dairy_scenario"); sut = reader.Parse(); /// Assert //(Only testing subset of all data) // [scenario] Assert.AreEqual(s.DetailsUrl, sut.DetailsUrl); Assert.AreEqual(s.StartDate.Year, sut.StartDate.Year); Assert.AreEqual( s.PathToWeatherFile, sut.PathToWeatherFile); Assert.AreEqual(s.Latitude, sut.Latitude); Assert.AreEqual(s.Longitude, sut.Longitude); // [cow_description] Assert.AreEqual(s.Cow.BodyMass_kg, sut.Cow.BodyMass_kg); Assert.AreEqual(s.Cow.IsLactating, sut.Cow.IsLactating); Assert.AreEqual(s.Cow.PhManure_mol_L, sut.Cow.PhManure_mol_L); Assert.AreEqual(s.Cow.MetabolizableEnergyDiet_MJ_d, sut.Cow.MetabolizableEnergyDiet_MJ_d); // [barn] Assert.AreEqual(s.Barn.Bedding, sut.Barn.Bedding); Assert.AreEqual(s.Barn.BeddingAddition, sut.Barn.BeddingAddition); Assert.AreEqual(s.Barn.CleaningFrequency, sut.Barn.CleaningFrequency); // [manure_storage] (lagoon) Assert.AreEqual(s.Lagoon.SurfaceArea_m2, sut.Lagoon.SurfaceArea_m2); Assert.AreEqual(s.Lagoon.VolumeMax_m3, sut.Lagoon.VolumeMax_m3); Assert.AreEqual(s.Lagoon.PH_mol_L, sut.Lagoon.PH_mol_L); // [fertigation_management] Assert.AreEqual(s.Fertigation.ApplicationMethod, sut.Fertigation.ApplicationMethod); Assert.AreEqual(s.Fertigation.AmountRemoved_percent, sut.Fertigation.AmountRemoved_percent); Assert.AreEqual(s.Fertigation.TargetField_id, sut.Fertigation.TargetField_id); }
public ZoneEditorData(ScenarioFile sf, string path) { scenarioFile = sf; editor = new Editor(this, path); data = sf.NdfBinary; foreach (var area in sf.ZoneData.AreaManagers[1]) { //var nodes=Geometry.getOutline(area.Content); //var zone = new Outline(nodes); //zoneOutlines.Add(zone); zoneNumber++; var zone = new Zone(editor, area); scenarioItems.Add(zone); zones.Add(zone); editor.addScenarioItem(zone); Console.WriteLine("name:"); Console.WriteLine(area.Name); Console.WriteLine("en name"); /*Console.WriteLine("zone\n"); * foreach (var c in area.Content.ClippedAreas) * { * Console.Write("vertices=["); * var scen = area.Content; * foreach (var v in scen.Vertices.GetRange(c.StartVertex,c.VertexCount)) * { * Console.WriteLine("{0:G},{1:G},{2:G};", (int)v.X, (int)v.Y, (int)v.Center); * } * Console.WriteLine("]"); * * Console.Write("tri=["); * foreach (var v in scen.Triangles.GetRange(c.StartTriangle,c.TriangleCount)) * { * Console.WriteLine("{0},{1},{2};", (int)v.Point1, (int)v.Point2, (int)v.Point3); * } * Console.WriteLine("]"); * }*/ } doZoneProperties(); Application.EnableVisualStyles(); Application.Run(editor); //Application.SetCompatibleTextRenderingDefault(false); }
public ScenarioFile Read(Stream s) { var f = new ScenarioFile(); var buffer = new byte[10]; s.Read(buffer, 0, buffer.Length); if (!Utils.ByteArrayCompare(Encoding.ASCII.GetBytes("SCENARIO\r\n"), buffer)) { throw new InvalidDataException("Wrong scenario header magic!"); } buffer = new byte[16]; s.Read(buffer, 0, buffer.Length); f.Checksum = buffer; s.Seek(2, SeekOrigin.Current); buffer = new byte[4]; s.Read(buffer, 0, buffer.Length); f.Version = BitConverter.ToInt32(buffer, 0); s.Read(buffer, 0, buffer.Length); int subFilesCount = BitConverter.ToInt32(buffer, 0); for (int i = 0; i < subFilesCount; i++) { f.lastPartStartByte = s.Position; s.Read(buffer, 0, buffer.Length); var contentFileBuffer = new byte[BitConverter.ToUInt32(buffer, 0)]; s.Read(contentFileBuffer, 0, contentFileBuffer.Length); f.ContentFiles.Add(contentFileBuffer); } var reader = new NdfbinReader(); f.NdfBinary = reader.Read(f.ContentFiles[1]); f.ZoneData = ReadZoneData(f.ContentFiles[0]); uncompressedPrintToFile(f.ContentFiles[2], "thirdPart"); return(f); }
public void ClearNumberedSectionPresent_ReturnsSectionAndCleared() { // Arrange ScenarioFile sut = new ScenarioFile(); Dictionary <string, string> sect1 = new Dictionary <string, string>(); sect1.Add("key1", "val1"); Dictionary <string, string> sect2 = new Dictionary <string, string>(); sect2.Add("key2", "val2"); sut.SetSection("sect:1", sect1); sut.SetSection("sect:2", sect2); // Act var actual = sut.Clear("sect"); // Assert Assert.AreEqual(0, sut.SaveContents().Length); Assert.AreEqual(sect2["key2"], actual["sect:2"]["key2"]); }
public byte[] Write(ScenarioFile file) { var scenarioData = new List <byte>(); scenarioData.AddRange(Encoding.ASCII.GetBytes("SCENARIO\r\n")); scenarioData.AddRange(BitConverter.GetBytes(Version)); scenarioData.AddRange(BitConverter.GetBytes(file.ContentFiles.Count)); file.ContentFiles[0] = CreateAreaSubFile(file.ZoneData); var ndfBinWriter = new NdfbinWriter(); file.ContentFiles[1] = ndfBinWriter.Write(file.NdfBinary, false); // something wrong here; enohka: Should be fixed by now? foreach (var contentFile in file.ContentFiles) { int padding = Utils.RoundToNextDivBy4(contentFile.Length) - contentFile.Length; scenarioData.AddRange(BitConverter.GetBytes(contentFile.Length + padding)); scenarioData.AddRange(contentFile); var paddingLst = new List <byte>(); for (int p = 0; p < padding; p++) { paddingLst.Add(0x0); } scenarioData.AddRange(paddingLst); } byte[] hash = MD5.Create().ComputeHash(scenarioData.ToArray()); scenarioData.InsertRange(10, hash.Concat(new byte[] { 0x00, 0x00 })); return(scenarioData.ToArray()); }
public void LoadParse_ComplexScenario_ParsesCorrectly() { /// Arrange var dairy = new ScenarioFile(); var field = new ScenarioFile(); var reader = new ScenarioReader(dairy, field); var injector = new Injector(); var s = injector.GetComplexScenario(); var sut = new Scenario(); /// Act reader.Load(@"Assets\complexScenario.NIFA_dairy_scenario"); sut = reader.Parse(); /// Assert //(Only testing subset of all data) // [scenario] Assert.AreEqual(s.Description, sut.Description); Assert.AreEqual(s.StartDate.Year, sut.StartDate.Year); Assert.AreEqual( s.SimulationPeriodMode, sut.SimulationPeriodMode); Assert.AreEqual(s.Latitude, sut.Latitude); Assert.AreEqual(s.Longitude, sut.Longitude); // [barn] Assert.AreEqual(s.Barn.NumberCows_cnt, sut.Barn.NumberCows_cnt); Assert.AreEqual(s.Barn.CleaningFrequency, sut.Barn.CleaningFrequency); // [manure_storage] (lagoon) Assert.AreEqual(s.Lagoon.SurfaceArea_m2, sut.Lagoon.SurfaceArea_m2); Assert.AreEqual(s.Lagoon.VolumeMax_m3, sut.Lagoon.VolumeMax_m3); Assert.AreEqual(s.Lagoon.PH_mol_L, sut.Lagoon.PH_mol_L); // [manure_separator] (AD) Assert.AreEqual(s.AnaerobicDigester.Id, sut.AnaerobicDigester.Id); Assert.AreEqual(s.AnaerobicDigester.Style, sut.AnaerobicDigester.Style); Assert.AreEqual(s.AnaerobicDigester.SourceFacility, sut.AnaerobicDigester.SourceFacility); Assert.AreEqual(s.AnaerobicDigester.LiquidFacility, sut.AnaerobicDigester.LiquidFacility); Assert.AreEqual(s.AnaerobicDigester.SolidFacility, sut.AnaerobicDigester.SolidFacility); // [manure_separator] (course sep) Assert.AreEqual(s.CourseSeparator.Id, sut.CourseSeparator.Id); Assert.AreEqual(s.CourseSeparator.Style, sut.CourseSeparator.Style); Assert.AreEqual(s.CourseSeparator.SourceFacility, sut.CourseSeparator.SourceFacility); Assert.AreEqual(s.CourseSeparator.LiquidFacility, sut.CourseSeparator.LiquidFacility); Assert.AreEqual(s.CourseSeparator.SolidFacility, sut.CourseSeparator.SolidFacility); // [manure_separator] (fine sep) Assert.AreEqual(s.FineSeparator.Id, sut.FineSeparator.Id); Assert.AreEqual(s.FineSeparator.Style, sut.FineSeparator.Style); Assert.AreEqual(s.FineSeparator.SourceFacility, sut.FineSeparator.SourceFacility); Assert.AreEqual(s.FineSeparator.LiquidFacility, sut.FineSeparator.LiquidFacility); Assert.AreEqual(s.FineSeparator.SolidFacility, sut.FineSeparator.SolidFacility); // [manure_separator] (nut rec) Assert.AreEqual(s.NutrientRecovery.Id, sut.NutrientRecovery.Id); Assert.AreEqual(s.NutrientRecovery.Style, sut.NutrientRecovery.Style); Assert.AreEqual(s.NutrientRecovery.SourceFacility, sut.NutrientRecovery.SourceFacility); Assert.AreEqual(s.NutrientRecovery.LiquidFacility, sut.NutrientRecovery.LiquidFacility); Assert.AreEqual(s.NutrientRecovery.SolidFacility, sut.NutrientRecovery.SolidFacility); // [receive_off_farm_biomass:1] Assert.AreEqual(s.ReceiveOffFarmBiomass.ApplicationDate.Year, sut.ReceiveOffFarmBiomass.ApplicationDate.Year); Assert.AreEqual(s.ReceiveOffFarmBiomass.Biomatter.Mass_kg, sut.ReceiveOffFarmBiomass.Biomatter.Mass_kg); Assert.AreEqual(s.ReceiveOffFarmBiomass.Biomatter.CarbonOrganicResilient_kg, sut.ReceiveOffFarmBiomass.Biomatter.CarbonOrganicResilient_kg); // [fertigation_management] Assert.AreEqual(s.Fertigation.ApplicationMethod, sut.Fertigation.ApplicationMethod); Assert.AreEqual(s.Fertigation.AmountRemoved_percent, sut.Fertigation.AmountRemoved_percent); Assert.AreEqual(s.Fertigation.TargetField_id, sut.Fertigation.TargetField_id); }
private static ScenarioFile[] Block( ScenarioFile[] ScenarioStrings ) { List<ScenarioFile> ScenarioBlocks = new List<ScenarioFile>(); for ( int i = 0; i < ScenarioStrings.Length; i++ ) { try { if ( ScenarioStrings[i].Pointer + 4 == ScenarioStrings[i + 1].Pointer ) { ScenarioFile s = new ScenarioFile(); s.Pointer = ScenarioStrings[i].Pointer - 8; s.Name = ScenarioStrings[i].Text; s.Text = ScenarioStrings[i + 1].Text; ScenarioBlocks.Add( s ); i++; } else { ScenarioFile s = new ScenarioFile(); s.Pointer = ScenarioStrings[i].Pointer - 12; s.Name = ""; s.Text = ScenarioStrings[i].Text; ScenarioBlocks.Add( s ); } } catch ( IndexOutOfRangeException ) { ScenarioFile s = new ScenarioFile(); s.Pointer = ScenarioStrings[i].Pointer - 12; s.Name = ""; s.Text = ScenarioStrings[i].Text; ScenarioBlocks.Add( s ); } } return ScenarioBlocks.ToArray(); }
public static ScenarioFile[] GetSQL( String ConnectionString, int FileNumber, String GracesJapaneseConnectionString, bool DumpIdentifyerStrings, bool ForceJapaneseDump, bool DumpDebug, bool SortByPointerRef) { List<ScenarioFile> ScenarioFiles = new List<ScenarioFile>(); SQLiteConnection Connection = new SQLiteConnection( ConnectionString ); Connection.Open(); using ( SQLiteTransaction Transaction = Connection.BeginTransaction() ) using ( SQLiteCommand Command = new SQLiteCommand( Connection ) ) { if ( FileNumber == -1 ) { Command.CommandText = "SELECT english, PointerRef, StringID"; if ( DumpIdentifyerStrings ) { Command.CommandText += ", IdentifyString"; } Command.CommandText += " FROM Text" + ( DumpDebug ? "" : " WHERE status != -1" ) + " ORDER BY " + ( SortByPointerRef ? "PointerRef" : "ID" ); } else { // for VScenarioMissing Command.CommandText = "SELECT english, PointerRef, StringID FROM Text WHERE" + ( DumpDebug ? "" : " status != -1 AND" ) + " OriginalFile = " + FileNumber.ToString() + " ORDER BY " + ( SortByPointerRef ? "PointerRef" : "ID" ); } SQLiteDataReader r = Command.ExecuteReader(); while ( r.Read() ) { String SQLText; try { SQLText = r.GetString( 0 ).Replace( "''", "'" ); } catch ( System.InvalidCastException ) { SQLText = null; } int PointerRef = r.GetInt32( 1 ); int StringID = r.GetInt32( 2 ); String IdentifyString = null; if ( DumpIdentifyerStrings ) { try { IdentifyString = r.GetString( 3 ); } catch ( System.InvalidCastException ) { IdentifyString = null; } } ScenarioFile sc = new ScenarioFile(); if ( ForceJapaneseDump || String.IsNullOrEmpty( SQLText ) ) { sc.Text = GetJapanese( GracesJapaneseConnectionString, StringID ); } else { sc.Text = SQLText; } sc.Pointer = PointerRef; sc.IdentifyerString = IdentifyString; ScenarioFiles.Add( sc ); } Transaction.Rollback(); } return ScenarioFiles.ToArray(); }
// Load scenario file into grid view private void LoadFile() { try { // Clear grid view gridFileStep.Rows.Clear(); // Get file path if (listFile.Items.Count > 0 && listFile.Text != "" && listFile.SelectedIndex >= 0) { // Get file path ComboboxItem objCombo = (ComboboxItem)listFile.SelectedItem; string filePath = objCombo.GetFilePath(); // Load file path ScenarioFile objSceFile = new ScenarioFile(); objSceFile.OpenFile(filePath); objSceFile.ReadStep(); // Add step to GUI for (int i=0; i< objSceFile.lstStep.Count(); i++) { DataGridViewRow row = (DataGridViewRow)gridFileStep.Rows[0].Clone(); ScenarioStep stepCurrent = objSceFile.lstStep[i]; row.Cells[0].Value = i; row.Cells[1].Value = stepCurrent.command; row.Cells[2].Value = stepCurrent.data; gridFileStep.Rows.Add(row); } } } catch (Exception ex) { MessageBox.Show("Error to read scenario file\nError = " + ex.Message); } }