public void AddSeatsTwoTransactions()
        {
            var wc = new MyWC.MyWC_Accessor();
            var tm = new MyTM.MyTM();
            var rm = new MyRM.MyRM();

            MyWC_Accessor.TransactionManager = tm;
            rm.SetName("flight");
            rm.TransactionManager = tm;
            tm.Register(rm);
            MyWC.MyWC.Flights = tm.GetResourceMananger("flight");

            var context1 = new Transaction();
            var context2 = new Transaction();

            wc.AddSeats(context1, "FL_C", 100, 550);
            wc.AddSeats(context2, "SG_A", 200, 250);
            wc.Abort(context2);
            wc.Commit(context1);

            context1 = new Transaction();
            var result = wc.ListFlights(context1);

            wc.Commit(context1);
            Assert.IsTrue((from f in result where f == "FL_C,100,550" select f).Any());
            Assert.IsFalse((from f in result where f == "SG_A,200,250" select f).Any());
        }
        public void AddSeatsTest()
        {
            var wc = new MyWC.MyWC_Accessor();
            var tm = new MyTM.MyTM();
            var rm = new MyRM.MyRM();

            MyWC_Accessor.TransactionManager = tm;
            rm.SetName("flight");
            rm.TransactionManager = tm;
            tm.Register(rm);
            MyWC.MyWC.Flights = tm.GetResourceMananger("flight");

            var context = wc.Start();

            wc.AddSeats(context, "FL", 100, 550);
            wc.AddSeats(context, "SG", 200, 250);
            wc.Commit(context);

            context = wc.Start();
            var result = wc.ListFlights(context);

            wc.Commit(context);
            Assert.AreEqual(2, result.Length);

            context = wc.Start();
            wc.AddSeats(context, "FL", 50, 450);
            wc.Commit(context);

            context = wc.Start();
            var c = wc.QueryFlight(context, "FL");

            Assert.AreEqual(150, c);
            var price = wc.QueryFlightPrice(context, "FL");

            Assert.AreEqual(450, price);
            wc.Abort(context);

            context = wc.Start();
            c       = wc.QueryFlight(context, "SG");
            price   = wc.QueryFlightPrice(context, "SG");
            Assert.AreEqual(200, c);
            Assert.AreEqual(250, price);
            wc.Abort(context);
        }
        public void DeleteSeatsTest()
        {
            var wc = new MyWC.MyWC_Accessor();
            var tm = new MyTM.MyTM();
            var rm = new MyRM.MyRM();

            MyWC_Accessor.TransactionManager = tm;
            rm.SetName("flight_000");
            rm.TransactionManager = tm;
            tm.Register(rm);
            MyWC.MyWC.Flights = tm.GetResourceMananger("flight_000");

            var context = wc.Start();
            var flights = wc.ListFlights(context);

            foreach (var f in flights)
            {
                wc.DeleteFlight(context, f.Split(',')[0]);
            }
            wc.Commit(context);

            context = wc.Start();
            Assert.IsTrue(wc.AddSeats(context, "FLX", 100, 550));
            Assert.IsTrue(wc.AddSeats(context, "SGX", 200, 250));
            wc.Commit(context);

            context = wc.Start();
            var result = wc.ListFlights(context);

            wc.Commit(context);
            Assert.AreEqual(2, result.Length);

            context = wc.Start();
            Assert.IsTrue(wc.DeleteSeats(context, "FLX", 50));
            Assert.IsTrue(wc.DeleteSeats(context, "SGX", 50));
            wc.Commit(context);

            context = wc.Start();
            var c1 = wc.QueryFlight(context, "FLX");
            var c2 = wc.QueryFlight(context, "SGX");

            Assert.AreEqual(100 - 50, c1);
            Assert.AreEqual(200 - 50, c2);
            wc.Abort(context);
        }
        public void AddManyFlightsTest()
        {
            var wc = new MyWC.MyWC_Accessor();
            var tm = new MyTM.MyTM();
            var rm = new MyRM.MyRM();

            MyWC_Accessor.TransactionManager = tm;
            rm.SetName("flight");
            rm.TransactionManager = tm;
            tm.Register(rm);
            MyWC.MyWC.Flights = tm.GetResourceMananger("flight");

            var context = wc.Start();

            wc.AddSeats(context, "FL", 100, 550);
            wc.AddSeats(context, "SG", 200, 250);
            wc.AddSeats(context, "SG1", 201, 251);
            wc.AddSeats(context, "SG2", 202, 252);
            wc.AddSeats(context, "SG3", 203, 253);
            wc.AddSeats(context, "SG4", 204, 254);
            wc.AddSeats(context, "SG5", 205, 255);
            wc.AddSeats(context, "SG5", 206, 256);
            wc.AddSeats(context, "SG6", 207, 257);
            wc.Abort(context);

            context = wc.Start();
            var result = wc.ListFlights(context);

            wc.Commit(context);
            Assert.AreEqual(0, result.Length);

            context = wc.Start();
            wc.AddSeats(context, "FL", 100, 550);
            wc.AddSeats(context, "SG", 200, 250);
            wc.AddSeats(context, "SG1", 201, 251);
            wc.AddSeats(context, "SG2", 202, 252);
            wc.AddSeats(context, "SG3", 203, 253);
            wc.AddSeats(context, "SG4", 204, 254);
            wc.AddSeats(context, "SG5", 205, 255);
            wc.AddSeats(context, "SG5", 206, 256);
            wc.AddSeats(context, "SG6", 207, 257);
            wc.Commit(context);

            context = wc.Start();
            result  = wc.ListFlights(context);
            wc.Commit(context);
            Assert.AreEqual(8, result.Length);

            context = wc.Start();
            wc.AddSeats(context, "FL", 50, 450);
            wc.Commit(context);

            context = wc.Start();
            var c = wc.QueryFlight(context, "FL");

            Assert.AreEqual(150, c);
            var price = wc.QueryFlightPrice(context, "FL");

            Assert.AreEqual(450, price);
            wc.Abort(context);

            context = wc.Start();
            c       = wc.QueryFlight(context, "SG");
            price   = wc.QueryFlightPrice(context, "SG");
            Assert.AreEqual(200, c);
            Assert.AreEqual(250, price);
            wc.Abort(context);

            context = wc.Start();
            c       = wc.QueryFlight(context, "SG5");
            price   = wc.QueryFlightPrice(context, "SG5");
            Assert.AreEqual(411, c);
            Assert.AreEqual(256, price);
            wc.Abort(context);
        }
        public void DeleteSeatsTest()
        {
            var wc = new MyWC.MyWC_Accessor();
            var tm = new MyTM.MyTM();
            var rm = new MyRM.MyRM();
            MyWC_Accessor.TransactionManager = tm;
            rm.SetName("flight_000");
            rm.TransactionManager = tm;
            tm.Register(rm);
            MyWC.MyWC.Flights = tm.GetResourceMananger("flight_000");

            var context = wc.Start();
            var flights = wc.ListFlights(context);
            foreach(var f in flights)
            {
                wc.DeleteFlight(context, f.Split(',')[0]);
            }
            wc.Commit(context);

            context = wc.Start();
            Assert.IsTrue(wc.AddSeats(context, "FLX", 100, 550));
            Assert.IsTrue(wc.AddSeats(context, "SGX", 200, 250));
            wc.Commit(context);

            context = wc.Start();
            var result = wc.ListFlights(context);
            wc.Commit(context);
            Assert.AreEqual(2, result.Length);

            context = wc.Start();
            Assert.IsTrue(wc.DeleteSeats(context, "FLX", 50));
            Assert.IsTrue(wc.DeleteSeats(context, "SGX", 50));
            wc.Commit(context);

            context = wc.Start();
            var c1 = wc.QueryFlight(context, "FLX");
            var c2 = wc.QueryFlight(context, "SGX");
            Assert.AreEqual(100 - 50, c1);
            Assert.AreEqual(200 - 50, c2);
            wc.Abort(context);
        }
        public void AddSeatsTwoTransactions()
        {
            var wc = new MyWC.MyWC_Accessor();
            var tm = new MyTM.MyTM();
            var rm = new MyRM.MyRM();
            MyWC_Accessor.TransactionManager = tm;
            rm.SetName("flight");
            rm.TransactionManager = tm;
            tm.Register(rm);
            MyWC.MyWC.Flights = tm.GetResourceMananger("flight");

            var context1 = new Transaction();
            var context2 = new Transaction();
            wc.AddSeats(context1, "FL_C", 100, 550);
            wc.AddSeats(context2, "SG_A", 200, 250);
            wc.Abort(context2);
            wc.Commit(context1);

            context1 = new Transaction();
            var result = wc.ListFlights(context1);
            wc.Commit(context1);
            Assert.IsTrue((from f in result where f == "FL_C,100,550" select f).Any());
            Assert.IsFalse((from f in result where f == "SG_A,200,250" select f).Any());
        }
        public void AddSeatsTest()
        {
            var wc = new MyWC.MyWC_Accessor();
            var tm = new MyTM.MyTM();
            var rm = new MyRM.MyRM();
            MyWC_Accessor.TransactionManager = tm;
            rm.SetName("flight");
            rm.TransactionManager = tm;
            tm.Register(rm);
            MyWC.MyWC.Flights = tm.GetResourceMananger("flight");

            var context = wc.Start();
            wc.AddSeats(context, "FL", 100, 550);
            wc.AddSeats(context, "SG", 200, 250);
            wc.Commit(context);

            context = wc.Start();
            var result = wc.ListFlights(context);
            wc.Commit(context);
            Assert.AreEqual(2, result.Length);

            context = wc.Start();
            wc.AddSeats(context, "FL", 50, 450);
            wc.Commit(context);

            context = wc.Start();
            var c = wc.QueryFlight(context, "FL");
            Assert.AreEqual(150, c);
            var price = wc.QueryFlightPrice(context, "FL");
            Assert.AreEqual(450, price);
            wc.Abort(context);

            context = wc.Start();
            c = wc.QueryFlight(context, "SG");
            price = wc.QueryFlightPrice(context, "SG");
            Assert.AreEqual(200, c);
            Assert.AreEqual(250, price);
            wc.Abort(context);
        }
        public void AddManyFlightsTest()
        {
            var wc = new MyWC.MyWC_Accessor();
            var tm = new MyTM.MyTM();
            var rm = new MyRM.MyRM();
            MyWC_Accessor.TransactionManager = tm;
            rm.SetName("flight");
            rm.TransactionManager = tm;
            tm.Register(rm);
            MyWC.MyWC.Flights = tm.GetResourceMananger("flight");

            var context = wc.Start();
            wc.AddSeats(context, "FL", 100, 550);
            wc.AddSeats(context, "SG", 200, 250);
            wc.AddSeats(context, "SG1", 201, 251);
            wc.AddSeats(context, "SG2", 202, 252);
            wc.AddSeats(context, "SG3", 203, 253);
            wc.AddSeats(context, "SG4", 204, 254);
            wc.AddSeats(context, "SG5", 205, 255);
            wc.AddSeats(context, "SG5", 206, 256);
            wc.AddSeats(context, "SG6", 207, 257);
            wc.Abort(context);

            context = wc.Start();
            var result = wc.ListFlights(context);
            wc.Commit(context);
            Assert.AreEqual(0, result.Length);

            context = wc.Start();
            wc.AddSeats(context, "FL", 100, 550);
            wc.AddSeats(context, "SG", 200, 250);
            wc.AddSeats(context, "SG1", 201, 251);
            wc.AddSeats(context, "SG2", 202, 252);
            wc.AddSeats(context, "SG3", 203, 253);
            wc.AddSeats(context, "SG4", 204, 254);
            wc.AddSeats(context, "SG5", 205, 255);
            wc.AddSeats(context, "SG5", 206, 256);
            wc.AddSeats(context, "SG6", 207, 257);
            wc.Commit(context);

            context = wc.Start();
            result = wc.ListFlights(context);
            wc.Commit(context);
            Assert.AreEqual(8, result.Length);

            context = wc.Start();
            wc.AddSeats(context, "FL", 50, 450);
            wc.Commit(context);

            context = wc.Start();
            var c = wc.QueryFlight(context, "FL");
            Assert.AreEqual(150, c);
            var price = wc.QueryFlightPrice(context, "FL");
            Assert.AreEqual(450, price);
            wc.Abort(context);

            context = wc.Start();
            c = wc.QueryFlight(context, "SG");
            price = wc.QueryFlightPrice(context, "SG");
            Assert.AreEqual(200, c);
            Assert.AreEqual(250, price);
            wc.Abort(context);

            context = wc.Start();
            c = wc.QueryFlight(context, "SG5");
            price = wc.QueryFlightPrice(context, "SG5");
            Assert.AreEqual(411, c);
            Assert.AreEqual(256, price);
            wc.Abort(context);
        }