public void TestUITTimeoutFix() { // Load molecules var filename = "NCDK.Data.MDL.UITTimeout.sdf"; var ins = ResourceLoader.GetAsStream(filename); var reader = new MDLV2000Reader(ins); var content = reader.Read(builder.NewChemFile()); var cList = ChemFileManipulator.GetAllAtomContainers(content).ToReadOnlyList(); var molecules = new IAtomContainer[2]; for (int j = 0; j < 2; j++) { var aAtomContainer = cList[j]; var tmpMatcher = CDK.AtomTypeMatcher; var tmpAdder = CDK.HydrogenAdder; for (int i = 0; i < aAtomContainer.Atoms.Count; i++) { var tmpAtom = aAtomContainer.Atoms[i]; var tmpType = tmpMatcher.FindMatchingAtomType(aAtomContainer, tmpAtom); AtomTypeManipulator.Configure(tmpAtom, tmpType); tmpAdder.AddImplicitHydrogens(aAtomContainer, tmpAtom); } AtomContainerManipulator.ConvertImplicitToExplicitHydrogens(aAtomContainer); molecules[j] = aAtomContainer; } var query = QueryAtomContainerCreator.CreateAnyAtomForPseudoAtomQueryContainer(molecules[1]); // test var starttime = System.DateTime.Now.Ticks; uiTester.Timeout = 200; uiTester.GetSubgraphAtomsMaps(molecules[0], query); var duration = System.DateTime.Now.Ticks - starttime; // The search must last much longer then two seconds if the timeout not works Assert.IsTrue(duration < 2000 * 10000); // 1 msec = 10000 ticks }