public void SmartLock()
        {
            UT_INIT();

            Report.GetDefault().PushHaltFlags( false, false );
            
                // SmartLock with null-users
                {
                                                                                                                                                  utWriter.lox.CntLogCalls= 0;
                    SmartLock sl= new SmartLock();      UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( null );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( null );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( null );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( null );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( null );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( null );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( null );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 1 ); utWriter.lox.CntLogCalls= 0;
                }
            
                // SmartLock with threadlocks
                {
                    ThreadLock tl1 = new ThreadLock();
                    ThreadLock tl2 = new ThreadLock();
                    ThreadLock tl3 = new ThreadLock();
                    SmartLock  sl= new SmartLock();    UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( tl1 );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( tl2 );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( tl3 );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( tl3 );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( tl3 );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 1 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( tl2 );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( tl1 );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( tl1 );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 1 ); utWriter.lox.CntLogCalls= 0;
                }
            
                // mixed
                {
                    ThreadLock tl1 = new ThreadLock();
                    ThreadLock tl2 = new ThreadLock();
                    ThreadLock tl3 = new ThreadLock();
                    SmartLock  sl= new SmartLock();     UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( tl1  );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( null );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( null );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( tl2  );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( null );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( tl2  );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 1 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( null );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.AddAcquirer   ( tl3  );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( null );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( tl1  );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( tl1  );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 1 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( null );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( tl3  );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( null );          UT_TRUE( sl.GetSafeness() == Safeness.Safe   );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( null );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( null );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 1 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( null );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 1 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( tl3  );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 1 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( tl2  );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 0 ); utWriter.lox.CntLogCalls= 0;
                    sl.RemoveAcquirer( null );          UT_TRUE( sl.GetSafeness() == Safeness.Unsafe );  UT_TRUE( utWriter.lox.CntLogCalls== 1 ); utWriter.lox.CntLogCalls= 0;
                }
                Report.GetDefault().PopHaltFlags();
        }
Beispiel #2
0
        public void SmartLock()
        {
            UT_INIT();

            Report.GetDefault().PushHaltFlags(false, false);

            // SmartLock with null-users
            {
                utWriter.lox.CntLogCalls = 0;
                SmartLock sl = new SmartLock();      UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls = 0;
                sl.AddAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls    = 0;
                sl.AddAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls      = 0;
                sl.AddAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls      = 0;
                sl.RemoveAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls   = 0;
                sl.RemoveAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls = 0;
                sl.RemoveAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls = 0;
                sl.RemoveAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 1); utWriter.lox.CntLogCalls = 0;
            }

            // SmartLock with threadlocks
            {
                ThreadLock tl1 = new ThreadLock();
                ThreadLock tl2 = new ThreadLock();
                ThreadLock tl3 = new ThreadLock();
                SmartLock  sl  = new SmartLock();    UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls = 0;
                sl.AddAcquirer(tl1);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls    = 0;
                sl.AddAcquirer(tl2);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls      = 0;
                sl.AddAcquirer(tl3);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls      = 0;
                sl.RemoveAcquirer(tl3);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls   = 0;
                sl.RemoveAcquirer(tl3);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 1); utWriter.lox.CntLogCalls   = 0;
                sl.RemoveAcquirer(tl2);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls = 0;
                sl.RemoveAcquirer(tl1);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls = 0;
                sl.RemoveAcquirer(tl1);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 1); utWriter.lox.CntLogCalls = 0;
            }

            // mixed
            {
                ThreadLock tl1 = new ThreadLock();
                ThreadLock tl2 = new ThreadLock();
                ThreadLock tl3 = new ThreadLock();
                SmartLock  sl  = new SmartLock();     UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls = 0;
                sl.AddAcquirer(tl1);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls     = 0;
                sl.AddAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls      = 0;
                sl.AddAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls      = 0;
                sl.AddAcquirer(tl2);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls       = 0;
                sl.AddAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls      = 0;
                sl.AddAcquirer(tl2);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 1); utWriter.lox.CntLogCalls       = 0;
                sl.AddAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls      = 0;
                sl.AddAcquirer(tl3);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls       = 0;
                sl.RemoveAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls   = 0;
                sl.RemoveAcquirer(tl1);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls    = 0;
                sl.RemoveAcquirer(tl1);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 1); utWriter.lox.CntLogCalls    = 0;
                sl.RemoveAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls   = 0;
                sl.RemoveAcquirer(tl3);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls    = 0;
                sl.RemoveAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Safe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls   = 0;
                sl.RemoveAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls = 0;
                sl.RemoveAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 1); utWriter.lox.CntLogCalls = 0;
                sl.RemoveAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 1); utWriter.lox.CntLogCalls = 0;
                sl.RemoveAcquirer(tl3);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 1); utWriter.lox.CntLogCalls  = 0;
                sl.RemoveAcquirer(tl2);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 0); utWriter.lox.CntLogCalls  = 0;
                sl.RemoveAcquirer(null);          UT_TRUE(sl.GetSafeness() == Safeness.Unsafe);  UT_TRUE(utWriter.lox.CntLogCalls == 1); utWriter.lox.CntLogCalls = 0;
            }
            Report.GetDefault().PopHaltFlags();
        }