public void Init() { CheckDisposed(); Unpacker.UnPackParatextTestProjects(); m_regData = Unpacker.PrepareRegistryForPTData(); // TeApp derives from FwApp m_testTeApp = new TestTeApp(new string[] { "-c", m_sSvrName, // ComputerName (aka the SQL server) "-proj", m_ProjName, // ProjectName "-db", m_sDbName}); // DatabaseName m_fMainWindowOpened = m_testTeApp.OpenMainWindow(); if (m_fMainWindowOpened) { m_firstMainWnd = (TestTeMainWnd)m_testTeApp.MainWindows[0]; // reload the styles from the database (test may have inserted new styles!) m_firstMainWnd.Synchronize(new SyncInfo(SyncMsg.ksyncStyle, 0, 0)); // Set the view to the DraftView m_firstMainWnd.SelectScriptureDraftView(); Application.DoEvents(); // insert book tests create filters - turn them off to prevent interaction // between tests m_firstMainWnd.TurnOffAllFilters(); m_firstDraftView = (TestTeDraftView)m_firstMainWnd.TheDraftView; m_firstDraftView.ActivateView(); SelectionHelper helper = m_firstDraftView.SetInsertionPoint(0, 0, 0, 0, true); // helper.IhvoEndPara = -1; helper.SetSelection(m_firstDraftView, true, true); // we don't want to open a transaction! } }
public void TestTearDown() { // Close the footnote view if it was showing if (m_firstMainWnd.TheDraftViewWrapper.FootnoteViewShowing) m_firstMainWnd.TheDraftViewWrapper.HideFootnoteView(); m_testTeApp.ExitAppplication(); //m_firstMainWnd.Cache = null; // Bad idea, since it has been disposed. m_testTeApp.Dispose(); m_testTeApp = null; m_regData.RestoreRegistryData(); // restore the value we saved in Init if (m_draftAreaStyleWidth != -1) m_teSubKey.SetValue("DraftStyleAreaWidth", m_draftAreaStyleWidth); m_firstMainWnd = null; // The app should have disposed this. m_firstDraftView = null; // The app should have disposed this. // // Cleanup (and Release?) the ICU memory mapping. // SIL.FieldWorks.Common.Utils.Icu.Cleanup(); m_teSubKey = null; m_regData = null; }
public void TestSetup() { Debug.Assert(m_testTeApp == null, "Why does it have something in m_testTeApp here?"); Unpacker.UnPackParatextTestProjects(); m_regData = Unpacker.PrepareRegistryForPTData(); m_teSubKey = Registry.CurrentUser.CreateSubKey(@"Software\SIL\FieldWorks\Translation Editor"); // save the width of the style pane, only if it already has a value // Tests will fail if the style pane is showing, so we turn it off. object keyValue = m_teSubKey.GetValue("DraftStyleAreaWidth"); if (keyValue != null) { m_draftAreaStyleWidth = (int)keyValue; m_teSubKey.SetValue("DraftStyleAreaWidth", 0); } // TeApp derives from FwApp // Make sure the registry thinks the last time an attempt was made to open TE // was successful. Otherwise, the welcome dialog shows up in the middle of tests. RegistryBoolSetting successfulStartup = new RegistryBoolSetting(FwSubKey.TE, "OpenSuccessful", true); successfulStartup.Value = true; // TODO: Figure out what we need to pass into the app m_testTeApp = new TestTeApp(new string[0]); m_fMainWindowOpened = m_testTeApp.OpenMainWindow(); Assert.AreEqual(1, m_testTeApp.MainWindows.Count); // Sidebar buttons get pressed as part of main window initialization; // wait for that initialization to finish before we proceed. while (DataUpdateMonitor.IsUpdateInProgress( ((TestTeMainWnd)m_testTeApp.MainWindows[0]).Cache.MainCacheAccessor)) { Application.DoEvents(); } if (m_fMainWindowOpened) { m_firstMainWnd = (TestTeMainWnd)m_testTeApp.MainWindows[0]; m_firstMainWnd.CreateDraftView(); // Set the view to the DraftView m_firstMainWnd.SwitchActiveView(m_firstMainWnd.TheDraftViewWrapper); Application.DoEvents(); m_firstDraftView = (TestTeDraftView)m_firstMainWnd.TheDraftView; m_firstDraftView.ActivateView(); SelectionHelper helper = m_firstDraftView.SetInsertionPoint(0, 0, 0, 0, true); // helper.IhvoEndPara = -1; helper.SetSelection(m_firstDraftView, true, true); Application.DoEvents(); } }
public void CursorPosInSamePlaceAfterCloseAndOpen() { // Set the insertion point to the 3rd paragraph of 3rd section. SelectionHelper selHelper1 = m_firstDraftView.SetInsertionPoint(0, 3, 3, 100, true); int tag3 = selHelper1.LevelInfo[3].tag; int ihvo3 = selHelper1.LevelInfo[3].ihvo; int tag2 = selHelper1.LevelInfo[2].tag; int ihvo2 = selHelper1.LevelInfo[2].ihvo; int tag1 = selHelper1.LevelInfo[1].tag; int ihvo1 = selHelper1.LevelInfo[1].ihvo; int tag0 = selHelper1.LevelInfo[0].tag; int numberOfLevels = selHelper1.NumberOfLevels; // close the main window // This will dispose it, so we have to remember the // relevant information about selections, above. m_firstMainWnd.Close(); // re-open the main window m_testTeApp.OpenMainWindow(); TestTeMainWnd newMainWnd = (TestTeMainWnd)m_testTeApp.MainWindows[0]; newMainWnd.CreateDraftView(); newMainWnd.SwitchActiveView(newMainWnd.TheDraftViewWrapper); // We also have to reset this member variable, // or the teardown code will try and use the old disposed one. m_firstMainWnd = newMainWnd; TestTeDraftView newDraftView = (TestTeDraftView)newMainWnd.TheDraftView; // We also have to reset this member variable, // or the teardown code will try and use the old disposed one. m_firstDraftView = newDraftView; SelectionHelper selHelper2 = SelectionHelper.GetSelectionInfo(null, newDraftView); // Verify the IPs are in the same book, section, and that the ip is in the // first paragraph Assert.AreEqual(numberOfLevels, selHelper2.NumberOfLevels); Assert.AreEqual(tag3, selHelper2.LevelInfo[3].tag); Assert.AreEqual(ihvo3, selHelper2.LevelInfo[3].ihvo); Assert.AreEqual(tag2, selHelper2.LevelInfo[2].tag); Assert.AreEqual(ihvo2, selHelper2.LevelInfo[2].ihvo); Assert.AreEqual(tag1, selHelper2.LevelInfo[1].tag); Assert.AreEqual(ihvo1, selHelper2.LevelInfo[1].ihvo); Assert.AreEqual(tag0, selHelper2.LevelInfo[0].tag); Assert.AreEqual(0, selHelper2.LevelInfo[0].ihvo); // Verify the IP is in the correct location. Assert.AreEqual(0, selHelper2.IchAnchor); Assert.AreEqual(0, selHelper2.IchEnd); }
public void Init() { if (m_fMainWindowOpened) { if (m_testTeApp == null) StartTestApp(); m_firstMainWnd = (TestTeMainWnd)m_testTeApp.MainWindows[0]; if (m_firstMainWnd.ClientWindows.Count == 0) m_firstMainWnd.CreateDraftView(); // Set the view to the DraftView m_firstMainWnd.SwitchActiveView(m_firstMainWnd.TheDraftViewWrapper); Application.DoEvents(); m_firstDraftView = (TestTeDraftView)m_firstMainWnd.TheDraftView; m_firstDraftView.ActivateView(); SelectionHelper helper = m_firstDraftView.SetInsertionPoint(0, 0, 0, 0, true); // helper.IhvoEndPara = -1; helper.SetSelection(m_firstDraftView, true, true); Application.DoEvents(); } }
/// <summary> /// Executes in two distinct scenarios. /// /// 1. If disposing is true, the method has been called directly /// or indirectly by a user's code via the Dispose method. /// Both managed and unmanaged resources can be disposed. /// /// 2. If disposing is false, the method has been called by the /// runtime from inside the finalizer and you should not reference (access) /// other managed objects, as they already have been garbage collected. /// Only unmanaged resources can be disposed. /// </summary> /// <param name="disposing"></param> /// <remarks> /// If any exceptions are thrown, that is fine. /// If the method is being done in a finalizer, it will be ignored. /// If it is thrown by client code calling Dispose, /// it needs to be handled by fixing the bug. /// /// If subclasses override this method, they should call the base implementation. /// </remarks> protected override void Dispose(bool disposing) { //Debug.WriteLineIf(!disposing, "****************** " + GetType().Name + " 'disposing' is false. ******************"); // Must not be run more than once. if (IsDisposed) return; if (disposing) { // Dispose managed resources here. if (m_testTeApp != null) { m_testTeApp.ExitAppplication(); m_testTeApp.Dispose(); } if (m_regData != null) m_regData.RestoreRegistryData(); // restore the value we saved in Init if (m_draftAreaStyleWidth != -1) m_teSubKey.SetValue("DraftStyleAreaWidth", m_draftAreaStyleWidth); } // Dispose unmanaged resources here, whether disposing is true or false. m_firstMainWnd = null; // The app should have disposed this. m_firstDraftView = null; // The app should have disposed this. m_testTeApp = null; // This used to be done by the dispose of the FwFindReplaceDlg control, but doing it // that often is wrong, because other instances of the control (or other controls) // may have the default WSF open. However, later tests depend on ShutDown writing // stuff out. #if !__MonoCS__ ILgWritingSystemFactory wsf = LgWritingSystemFactoryClass.Create(); #else // TODO-Linux: above code hangs - FIXME // Currently doing without the Invoke - see FwKernel.cs LgWritingSystemFactoryClass.Create. ILgWritingSystemFactory wsf = new LgWritingSystemFactory(); #endif wsf.Shutdown(); Marshal.ReleaseComObject(wsf); wsf = null; // // Cleanup (and Release?) the ICU memory mapping. // SIL.FieldWorks.Common.Utils.Icu.Cleanup(); m_DefParaCharsStyle = null; m_teSubKey = null; m_regData = null; base.Dispose(disposing); }
public void Init() { CheckDisposed(); if (m_fMainWindowOpened) { m_firstMainWnd = (TestTeMainWnd)m_testTeApp.MainWindows[0]; // Set the view to the DraftView m_firstMainWnd.SelectScriptureDraftView(); Application.DoEvents(); m_firstDraftView = (TestTeDraftView)m_firstMainWnd.TheDraftView; m_firstDraftView.ActivateView(); SelectionHelper helper = m_firstDraftView.SetInsertionPoint(0, 0, 0, 0, true); // helper.IhvoEndPara = -1; helper.SetSelection(m_firstDraftView, true, true); if (!m_firstMainWnd.Cache.DatabaseAccessor.IsTransactionOpen()) m_firstMainWnd.Cache.DatabaseAccessor.BeginTrans(); m_firstMainWnd.Cache.BeginUndoTask("Undo TeAppTest", "Redo TeAppTest"); } }
public void Init() { CheckDisposed(); if (m_fMainWindowOpened) { m_firstMainWnd = (TestTeMainWnd)m_testTeApp.MainWindows[0]; // reload the styles from the database (test may have inserted new styles!) m_firstMainWnd.Synchronize(new SyncInfo(SyncMsg.ksyncStyle, 0, 0)); // Set the view to the DraftView m_firstMainWnd.SelectScriptureDraftView(); Application.DoEvents(); // insert book tests create filters - turn them off to prevent interaction // between tests m_firstMainWnd.TurnOffAllFilters(); m_firstDraftView = (TestTeDraftView)m_firstMainWnd.TheDraftView; m_firstDraftView.ActivateView(); SelectionHelper helper = m_firstDraftView.SetInsertionPoint(0, 0, 0, 0, true); // helper.IhvoEndPara = -1; helper.SetSelection(m_firstDraftView, true, true); // we don't want to open a transaction! } }
public void CloseAndReOpenTests() { Assert.IsTrue(m_fMainWindowOpened); // cast to object to get rid of compiler warning Assert.IsTrue((object)m_testTeApp is IBackupDelegates, "TeApp/FwApp doesn't implement IBackupDelegates"); Assert.AreEqual(1, m_testTeApp.MainWindows.Count); Assert.AreEqual(m_sSvrName, m_firstMainWnd.Cache.ServerName); // Test CloseDbAndWindows bool fClosed = m_testTeApp.CloseDbAndWindows_Bkupd(m_sSvrName, m_sDbName, false); Assert.IsTrue(fClosed, "App not closed."); // only 1 window should now be open and it should be the dummy window. Assert.AreEqual(1, m_testTeApp.MainWindows.Count); Assert.IsInstanceOfType(typeof(FwDummyWnd), m_testTeApp.MainWindows[0]); // be sure the DB connection got closed string sSql = string.Format("Server={0}; Database=master; User ID = sa;" + "Password=inscrutable; Pooling=false;", m_sSvrName); SqlConnection sqlConMaster = new SqlConnection(sSql); sqlConMaster.Open(); SqlCommand sqlComm = sqlConMaster.CreateCommand(); sqlComm.CommandText = string.Format(@"SELECT * FROM [master].[dbo].[sysprocesses] [sproc] join sysdatabases [sdb] on [sdb].[dbid] = [sproc].[dbid] and [sdb].[name] = '{0}' WHERE [sproc].[hostname] = '{1}' AND [sproc].[program_name] = 'SIL FieldWorks'", m_sDbName, Environment.MachineName); SqlDataReader sqlreader = sqlComm.ExecuteReader(System.Data.CommandBehavior.SingleResult); bool fAnyRows = sqlreader.Read(); sqlreader.Close(); sqlConMaster.Close(); Assert.IsFalse(fAnyRows, "Got rows after closing."); // Test ReopenDbAndOneWindow m_testTeApp.ReopenDbAndOneWindow_Bkupd(m_sSvrName, m_sDbName); Assert.AreEqual(1, m_testTeApp.MainWindows.Count); m_firstMainWnd = (TestTeMainWnd)m_testTeApp.MainWindows[0]; Assert.AreEqual(m_sSvrName, m_firstMainWnd.Cache.ServerName); Assert.AreEqual(m_sDbName.ToLower(), m_firstMainWnd.Cache.DatabaseName.ToLower()); }