public void Load(ReplaceableCodeInfo specifications) { Clear(); RegisterAll(specifications.Methods.As<IReplaceableReference>()); RegisterAll(specifications.FieldAccessors.As<IReplaceableReference>()); RegisterAll(specifications.FieldAssignments.As<IReplaceableReference>()); }
public void SerializeSpecifications(string filename, ReplaceableCodeInfo specs) { var serializer = new XmlSerializer(typeof(ReplaceableCodeInfo)); using (var binFile = File.Create(Path.Combine(path, filename))) { serializer.Serialize(binFile, specs); binFile.Close(); } }
public ReplaceableCodeInfo DeserializeAllSpecifications() { var assemblyPath = Path.GetDirectoryName(path); var files = Directory.GetFiles(assemblyPath, "*.SharpMock.SerializedSpecifications.xml"); var aggregate = new ReplaceableCodeInfo(); foreach (var specList in files) { var serializer = new XmlSerializer(typeof(ReplaceableCodeInfo)); using (var fileStream = File.Open(specList, FileMode.Open)) { var deserializedInfo = serializer.Deserialize(fileStream) as ReplaceableCodeInfo; aggregate = deserializedInfo.Merge(aggregate); fileStream.Close(); } } return aggregate; }
public void Execute(PostCompilerContext context) { var specAssembly = Path.GetFileNameWithoutExtension(context.Args.TestAssemblyPath); var autoSpecs = String.Format("{0}.Fluent.SharpMock.SerializedSpecifications.xml", specAssembly); var serializer = new ReplaceableCodeInfoSerializer( Path.GetDirectoryName(context.Args.TestAssemblyPath)); var replaceableAssignments = context.Registry.GetRegisteredReferences(ReplaceableReferenceTypes.FieldAssignment); var replaceableAccessors = context.Registry.GetRegisteredReferences(ReplaceableReferenceTypes.FieldAccessor); var replaceableMethods = context.Registry.GetRegisteredReferences(ReplaceableReferenceTypes.Method); var replaceableCode = new ReplaceableCodeInfo(); replaceableCode.Methods = replaceableMethods.As<ReplaceableMethodInfo>(); replaceableCode.FieldAccessors = replaceableAccessors.As<ReplaceableFieldInfo>(); replaceableCode.FieldAssignments = replaceableAssignments.As<ReplaceableFieldInfo>(); serializer.SerializeSpecifications(autoSpecs, replaceableCode); SerializeExplicitSpecifications(context.Args.TestAssemblyPath); }
private void SerializeExplicitSpecifications(string specAssembly) { var assembly = System.Reflection.Assembly.LoadFrom(specAssembly); var specs = new List<Type>(assembly.GetTypes()) .FindAll(t => typeof(IReplacementSpecification).IsAssignableFrom(t)); var specifiedMethods = new List<ReplaceableMethodInfo>(); foreach (var specType in specs) { var spec = Activator.CreateInstance(specType) as IReplacementSpecification; specifiedMethods.AddRange(spec.GetMethodsToReplace()); } var specPath = Path.GetDirectoryName(specAssembly); var specAssemblyName = Path.GetFileNameWithoutExtension(specAssembly); var serializedSpecName = String.Format("{0}.SharpMock.SerializedSpecifications.xml", specAssemblyName); var replaceableCode = new ReplaceableCodeInfo(); replaceableCode.Methods = specifiedMethods; var serializer = new ReplaceableCodeInfoSerializer(specPath); serializer.SerializeSpecifications(serializedSpecName, replaceableCode); }