public ExceptionVerifier(string assemblyName, ExceptionVerificationFlags flags, ITestOutputHelper output) { _output = output; if (assemblyName == null) { throw new VerifyException("Assembly name cannot be null"); } _verificationFlags = flags; try { switch (assemblyName.ToUpper()) { case "SYSTEM.XML": { var dom = new XmlDocument(); _asm = dom.GetType().Assembly; } break; default: _asm = Assembly.LoadFrom(GetRuntimeInstallDir() + assemblyName + ".dll"); break; } if (_asm == null) { throw new VerifyException("Can not load assembly " + assemblyName); } // let's determine if this is a loc run, if it is then we need to load satellite assembly _locAsm = null; if (!CultureInfo.CurrentCulture.Equals(new CultureInfo("en-US")) && !CultureInfo.CurrentCulture.Equals(new CultureInfo("en"))) { try { // load satellite assembly _locAsm = _asm.GetSatelliteAssembly(new CultureInfo(CultureInfo.CurrentCulture.Parent.IetfLanguageTag)); } catch (FileNotFoundException e1) { _output.WriteLine(e1.ToString()); } catch (FileLoadException e2) { _output.WriteLine(e2.ToString()); } } } catch (Exception e) { _output.WriteLine("Exception: " + e.Message); _output.WriteLine("Stack: " + e.StackTrace); throw new VerifyException("Error while loading assembly"); } string[] resArray; Stream resStream = null; var bFound = false; // Check that assembly manifest has resources if (null != _locAsm) { resArray = _locAsm.GetManifestResourceNames(); } else { resArray = _asm.GetManifestResourceNames(); } foreach (var s in resArray) { if (s.EndsWith(".resources")) { resStream = null != _locAsm?_locAsm.GetManifestResourceStream(s) : _asm.GetManifestResourceStream(s); bFound = true; if (bFound && resStream != null) { // Populate hashtable from resources var resReader = new ResourceReader(resStream); if (_resources == null) { _resources = new Hashtable(); } var ide = resReader.GetEnumerator(); while (ide.MoveNext()) { if (!_resources.ContainsKey(ide.Key.ToString())) { _resources.Add(ide.Key.ToString(), ide.Value.ToString()); } } resReader.Dispose(); } } } if (!bFound || resStream == null) { throw new VerifyException("GetManifestResourceStream() failed"); } }
public ExceptionVerifier(string assemblyName, ExceptionVerificationFlags flags, ITestOutputHelper output) { _output = output; if (assemblyName == null) throw new VerifyException("Assembly name cannot be null"); _verificationFlags = flags; try { switch (assemblyName.ToUpper()) { case "SYSTEM.XML": { var dom = new XmlDocument(); _asm = dom.GetType().GetTypeInfo().Assembly; } break; //case "SYSTEM.DATA": //{ // var ds = new DataSet(); // asm = ds.GetType().Assembly; //} // break; default: throw new FileLoadException("Cannot load assembly from " + GetRuntimeInstallDir() + assemblyName + ".dll"); //asm = Assembly.LoadFrom(GetRuntimeInstallDir() + assemblyName + ".dll"); //break; } if (_asm == null) throw new VerifyException("Can not load assembly " + assemblyName); // let's determine if this is a loc run, if it is then we need to load satellite assembly _locAsm = null; if (!CultureInfo.CurrentCulture.Equals(new CultureInfo("en-US")) && !CultureInfo.CurrentCulture.Equals(new CultureInfo("en"))) { try { throw new NotImplementedException("Cannot Load Satellite assembly"); // load satellite assembly //locAsm = asm.GetSatelliteAssembly(new CultureInfo(CultureInfo.CurrentCulture.Parent.IetfLanguageTag)); } catch (FileNotFoundException e1) { _output.WriteLine(e1.ToString()); } catch (FileLoadException e2) { _output.WriteLine(e2.ToString()); } } } catch (Exception e) { _output.WriteLine("Exception: " + e.Message); _output.WriteLine("Stack: " + e.StackTrace); throw new VerifyException("Error while loading assembly"); } string[] resArray; Stream resStream = null; var bFound = false; // Check that assembly manifest has resources if (null != _locAsm) resArray = _locAsm.GetManifestResourceNames(); else resArray = _asm.GetManifestResourceNames(); foreach (var s in resArray) { if (s.EndsWith(".resources")) { resStream = null != _locAsm ? _locAsm.GetManifestResourceStream(s) : _asm.GetManifestResourceStream(s); bFound = true; if (bFound && resStream != null) { // Populate hashtable from resources var resReader = new ResourceReader(resStream); if (_resources == null) { _resources = new Hashtable(); } var ide = resReader.GetEnumerator(); while (ide.MoveNext()) { if (!_resources.ContainsKey(ide.Key.ToString())) _resources.Add(ide.Key.ToString(), ide.Value.ToString()); } resReader.Dispose(); } //break; } } if (!bFound || resStream == null) throw new VerifyException("GetManifestResourceStream() failed"); }