public void ConvertToBinaryCompressedToStringBackToBinaryDeserializedBackToOriginalTest() { var xyz = new XYZ(); var binarySerialized = new BinarySerialized <XYZ>(xyz, false); var serializedValue = binarySerialized.SerializedValue; binarySerialized.Compress(); Assert.AreNotEqual(serializedValue.Length, binarySerialized.SerializedValue.Length); var xmlSerialized = new XmlSerialized <BinarySerialized <XYZ> >(binarySerialized); binarySerialized = xmlSerialized.Deserialize(); binarySerialized.Decompress(); xyz = binarySerialized.Deserialize(); Assert.AreEqual(xyz.X, 2); Assert.AreEqual(xyz.Y, "7"); Assert.IsTrue(xyz.Z.Length == 2); Assert.AreEqual(xyz.Z[0], 23); Assert.AreEqual(xyz.Z[1], 17); }
public LinkedFileSet( string originFile, Dictionary <string, LinkedFile> allFilesByFullIdentifier, List <SymbolDefinition> allSymbolDefinitionsLeafFirst) { fileIndexesByFullIdentifier = new SerializableDictionary <string, int>(); this.allSymbolDefinitionsLeafFirst = allSymbolDefinitionsLeafFirst; this.originFile = originFile; var originFileData = allFilesByFullIdentifier[originFile]; if (originFileData.isLibrary) { throw new LinkException(LinkExceptionType.BASE_FILE_IS_LIBRARY, $"Origin file '{originFile}' is a library. origin file must be a .lsystem file"); } allFiles = new BinarySerialized <List <LinkedFile> >(); var compileTimes = new Dictionary <string, DefineDirective>(); var runTimes = new Dictionary <string, RuntimeParameterAndDefault>(); var immaturitySymbols = new HashSet <int>(); foreach (var kvp in allFilesByFullIdentifier) { allFiles.data.Add(kvp.Value); fileIndexesByFullIdentifier[kvp.Key] = allFiles.data.Count - 1; foreach (var compileTime in kvp.Value.delaredInFileCompileTimeParameters) { if (compileTimes.ContainsKey(compileTime.name)) { throw new LinkException(LinkExceptionType.GLOBAL_VARIABLE_COLLISION, $"Duplicated global compile time variable '{compileTime.name}' declared in {kvp.Value.fileSource}"); } else { compileTimes[compileTime.name] = compileTime; } } foreach (var runTime in kvp.Value.declaredInFileRuntimeParameters) { if (runTimes.ContainsKey(runTime.name)) { throw new LinkException(LinkExceptionType.GLOBAL_VARIABLE_COLLISION, $"Duplicated global run time variable '{runTime.name}' declared in {kvp.Value.fileSource}"); } else { runTimes[runTime.name] = runTime; } } foreach (var immature in kvp.Value.GetAllImmaturityMarkerSymbols()) { immaturitySymbols.Add(immature); } } allGlobalCompileTimeParams = compileTimes.Values.ToList(); allGlobalRuntimeParams = runTimes.Values.ToList(); this.immaturitySymbolMarkers = immaturitySymbols.ToArray(); defaultSymbolDefinitionIndexBySymbol = new SerializableDictionary <int, int>(); for (var i = 0; i < allSymbolDefinitionsLeafFirst.Count; i++) { var definition = allSymbolDefinitionsLeafFirst[i]; if (defaultSymbolDefinitionIndexBySymbol.ContainsKey(definition.actualSymbol)) { continue; } defaultSymbolDefinitionIndexBySymbol[definition.actualSymbol] = i; } if (!fileIndexesByFullIdentifier.ContainsKey(originFile)) { throw new LinkException(LinkExceptionType.BAD_ORIGIN_FILE, $"could not find origin file '{originFile}'"); } }