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

            MyWC_Accessor.TransactionManager = tm;
            rm.SetName("car");
            rm.TransactionManager = tm;
            tm.Register(rm);
            MyWC.MyWC.Cars = tm.GetResourceMananger("car");

            var context = wc.Start();

            Assert.IsTrue(wc.AddCars(context, "SEATTLE", 100, 66));
            Assert.IsTrue(wc.AddCars(context, "HONOLULU", 200, 220));
            wc.Commit(context);

            context = wc.Start();
            Assert.AreEqual(100, wc.QueryCar(context, "SEATTLE"));
            Assert.AreEqual(66, wc.QueryCarPrice(context, "SEATTLE"));

            Assert.AreEqual(200, wc.QueryCar(context, "HONOLULU"));
            Assert.AreEqual(220, wc.QueryCarPrice(context, "HONOLULU"));
            wc.Commit(context);

            //add rooms
            context = wc.Start();
            Assert.IsTrue(wc.AddCars(context, "SEATTLE", 10, 55));
            Assert.IsTrue(wc.AddCars(context, "HONOLULU", 20, 110));
            wc.Commit(context);

            context = wc.Start();
            Assert.AreEqual(100 + 10, wc.QueryCar(context, "SEATTLE"));
            Assert.AreEqual(55, wc.QueryCarPrice(context, "SEATTLE"));

            Assert.AreEqual(220, wc.QueryCar(context, "HONOLULU"));
            Assert.AreEqual(110, wc.QueryCarPrice(context, "HONOLULU"));
            wc.Commit(context);

            //delete rooms
            context = wc.Start();
            Assert.IsTrue(wc.DeleteCars(context, "SEATTLE", 5));
            Assert.IsTrue(wc.DeleteCars(context, "HONOLULU", 10));
            wc.Commit(context);

            context = wc.Start();
            Assert.AreEqual(100 + 10 - 5, wc.QueryCar(context, "SEATTLE"));
            Assert.AreEqual(55, wc.QueryCarPrice(context, "SEATTLE"));

            Assert.AreEqual(220 - 10, wc.QueryCar(context, "HONOLULU"));
            Assert.AreEqual(110, wc.QueryCarPrice(context, "HONOLULU"));
            wc.Commit(context);
        }
        public void AddDeleteCars()
        {
            var wc = new MyWC.MyWC_Accessor();
            var tm = new MyTM.MyTM();
            var rm = new MyRM.MyRM();
            MyWC_Accessor.TransactionManager = tm;
            rm.SetName("car");
            rm.TransactionManager = tm;
            tm.Register(rm);
            MyWC.MyWC.Cars = tm.GetResourceMananger("car");

            var context = wc.Start();
            Assert.IsTrue(wc.AddCars(context, "SEATTLE", 100, 66));
            Assert.IsTrue(wc.AddCars(context, "HONOLULU", 200, 220));
            wc.Commit(context);

            context = wc.Start();
            Assert.AreEqual(100, wc.QueryCar(context, "SEATTLE"));
            Assert.AreEqual(66, wc.QueryCarPrice(context, "SEATTLE"));

            Assert.AreEqual(200, wc.QueryCar(context, "HONOLULU"));
            Assert.AreEqual(220, wc.QueryCarPrice(context, "HONOLULU"));
            wc.Commit(context);

            //add rooms
            context = wc.Start();
            Assert.IsTrue(wc.AddCars(context, "SEATTLE", 10, 55));
            Assert.IsTrue(wc.AddCars(context, "HONOLULU", 20, 110));
            wc.Commit(context);

            context = wc.Start();
            Assert.AreEqual(100 + 10, wc.QueryCar(context, "SEATTLE"));
            Assert.AreEqual(55, wc.QueryCarPrice(context, "SEATTLE"));

            Assert.AreEqual(220, wc.QueryCar(context, "HONOLULU"));
            Assert.AreEqual(110, wc.QueryCarPrice(context, "HONOLULU"));
            wc.Commit(context);

            //delete rooms
            context = wc.Start();
            Assert.IsTrue(wc.DeleteCars(context, "SEATTLE", 5));
            Assert.IsTrue(wc.DeleteCars(context, "HONOLULU", 10));
            wc.Commit(context);

            context = wc.Start();
            Assert.AreEqual(100 + 10 - 5, wc.QueryCar(context, "SEATTLE"));
            Assert.AreEqual(55, wc.QueryCarPrice(context, "SEATTLE"));

            Assert.AreEqual(220 - 10, wc.QueryCar(context, "HONOLULU"));
            Assert.AreEqual(110, wc.QueryCarPrice(context, "HONOLULU"));
            wc.Commit(context);
        }
        public void AddDeleteCombinationsOneByOne()
        {
            var wc  = new MyWC.MyWC_Accessor();
            var tm  = new MyTM.MyTM();
            var rmf = new MyRM.MyRM();
            var rmc = new MyRM.MyRM();
            var rmr = new MyRM.MyRM();

            MyWC_Accessor.TransactionManager = tm;

            rmf.SetName("flight");
            rmf.TransactionManager = tm;

            rmc.SetName("car");
            rmc.TransactionManager = tm;

            rmr.SetName("room");
            rmr.TransactionManager = tm;

            tm.Register(rmf);
            tm.Register(rmc);
            tm.Register(rmr);

            MyWC.MyWC.Flights = tm.GetResourceMananger("flight");
            MyWC.MyWC.Cars    = tm.GetResourceMananger("car");
            MyWC.MyWC.Rooms   = tm.GetResourceMananger("room");

            var context = new Transaction();

            wc.AddSeats(context, "SEA-JFK", 3000, 300);
            wc.Commit(context);
            wc.AddCars(context, "NY", 2000, 200);
            wc.Commit(context);
            wc.AddRooms(context, "NY", 1000, 100);
            wc.Commit(context);

            context = new Transaction();
            Assert.AreEqual(200, wc.QueryCarPrice(context, "NY"));
            Assert.AreEqual(300, wc.QueryFlightPrice(context, "SEA-JFK"));
            Assert.AreEqual(100, wc.QueryRoomPrice(context, "NY"));
            wc.Commit(context);
        }
        public void Reservation()
        {
            var wc  = new MyWC.MyWC_Accessor();
            var tm  = new MyTM.MyTM();
            var rmf = new MyRM.MyRM();
            var rmc = new MyRM.MyRM();
            var rmr = new MyRM.MyRM();

            MyWC_Accessor.TransactionManager = tm;

            rmf.SetName("flight");
            rmf.TransactionManager = tm;

            rmc.SetName("car");
            rmc.TransactionManager = tm;

            rmr.SetName("room");
            rmr.TransactionManager = tm;

            tm.Register(rmf);
            tm.Register(rmc);
            tm.Register(rmr);

            MyWC.MyWC.Flights            = tm.GetResourceMananger("flight");
            MyWC.MyWC.Cars               = tm.GetResourceMananger("car");
            MyWC.MyWC.Rooms              = tm.GetResourceMananger("room");
            MyWC.MyWC.TransactionManager = tm;

            var context = wc.Start();

            wc.AddSeats(context, "SEA-JFK", 3000, 300);
            wc.AddSeats(context, "JFK-STV", 3000, 300);
            wc.AddCars(context, "NY", 2000, 200);
            wc.AddRooms(context, "NY", 1000, 100);
            wc.Commit(context);

            var c1 = new Customer();
            var c2 = new Customer();

            Assert.IsTrue(wc.ReserveItinerary(c1, new[] { "SEA-JFK", "JFK-STV" }, "NY", true, true));
            Assert.IsTrue(wc.ReserveItinerary(c2, new[] { "SEA-JFK" }, "NY", true, true));

            context = wc.Start();
            Assert.AreEqual(c1, wc.ListCustomers(context)[0]);
            Assert.AreEqual(c2, wc.ListCustomers(context)[1]);
            wc.Commit(context);

            context = wc.Start();
            Assert.AreEqual(3000 - 2, wc.QueryFlight(context, "SEA-JFK"));
            Assert.AreEqual(3000 - 1, wc.QueryFlight(context, "JFK-STV"));
            Assert.AreEqual(1000 - 2, wc.QueryRoom(context, "NY"));
            wc.Commit(context);

            wc.CancelItinerary(c1);
            wc.CancelItinerary(c2);

            context = wc.Start();
            Assert.AreEqual(1000, wc.QueryRoom(context, "NY"));
            Assert.AreEqual(3000, wc.QueryFlight(context, "SEA-JFK"));
            Assert.AreEqual(3000, wc.QueryFlight(context, "JFK-STV"));
            wc.Commit(context);
        }
        public void AddDeleteCombinations()
        {
            var wc = new MyWC.MyWC_Accessor();
            var tm = new MyTM.MyTM();
            var rmf = new MyRM.MyRM();
            var rmc = new MyRM.MyRM();
            var rmr = new MyRM.MyRM();
            MyWC_Accessor.TransactionManager = tm;

            rmf.SetName("flight");
            rmf.TransactionManager = tm;

            rmc.SetName("car");
            rmc.TransactionManager = tm;

            rmr.SetName("room");
            rmr.TransactionManager = tm;

            tm.Register(rmf);
            tm.Register(rmc);
            tm.Register(rmr);

            MyWC.MyWC.Flights = tm.GetResourceMananger("flight");
            MyWC.MyWC.Cars = tm.GetResourceMananger("car");
            MyWC.MyWC.Rooms = tm.GetResourceMananger("room");

            var context = new Transaction();
            wc.AddSeats(context, "SEA-JFK", 3000, 300);
            wc.AddCars(context, "NY", 2000, 200);
            wc.AddRooms(context, "NY", 1000, 100);
            wc.Commit(context);

            context = new Transaction();
            Assert.AreEqual(200, wc.QueryCarPrice(context, "NY"));
            Assert.AreEqual(300, wc.QueryFlightPrice(context, "SEA-JFK"));
            Assert.AreEqual(100, wc.QueryRoomPrice(context, "NY"));
            wc.Commit(context);
        }
        public void Reservation()
        {
            var wc = new MyWC.MyWC_Accessor();
            var tm = new MyTM.MyTM();
            var rmf = new MyRM.MyRM();
            var rmc = new MyRM.MyRM();
            var rmr = new MyRM.MyRM();
            MyWC_Accessor.TransactionManager = tm;

            rmf.SetName("flight");
            rmf.TransactionManager = tm;

            rmc.SetName("car");
            rmc.TransactionManager = tm;

            rmr.SetName("room");
            rmr.TransactionManager = tm;

            tm.Register(rmf);
            tm.Register(rmc);
            tm.Register(rmr);

            MyWC.MyWC.Flights = tm.GetResourceMananger("flight");
            MyWC.MyWC.Cars = tm.GetResourceMananger("car");
            MyWC.MyWC.Rooms = tm.GetResourceMananger("room");
            MyWC.MyWC.TransactionManager = tm;

            var context = wc.Start();
            wc.AddSeats(context, "SEA-JFK", 3000, 300);
            wc.AddSeats(context, "JFK-STV", 3000, 300);
            wc.AddCars(context, "NY", 2000, 200);
            wc.AddRooms(context, "NY", 1000, 100);
            wc.Commit(context);

            var c1 = new Customer();
            var c2 = new Customer();
            Assert.IsTrue(wc.ReserveItinerary(c1, new[] {"SEA-JFK", "JFK-STV"}, "NY", true, true));
            Assert.IsTrue(wc.ReserveItinerary(c2, new[] {"SEA-JFK"}, "NY", true, true));

            context = wc.Start();
            Assert.AreEqual(c1, wc.ListCustomers(context)[0]);
            Assert.AreEqual(c2, wc.ListCustomers(context)[1]);
            wc.Commit(context);

            context = wc.Start();
            Assert.AreEqual(3000 - 2, wc.QueryFlight(context, "SEA-JFK"));
            Assert.AreEqual(3000 - 1, wc.QueryFlight(context, "JFK-STV"));
            Assert.AreEqual(1000 - 2, wc.QueryRoom(context, "NY"));
            wc.Commit(context);

            wc.CancelItinerary(c1);
            wc.CancelItinerary(c2);

            context = wc.Start();
            Assert.AreEqual(1000, wc.QueryRoom(context, "NY"));
            Assert.AreEqual(3000, wc.QueryFlight(context, "SEA-JFK"));
            Assert.AreEqual(3000, wc.QueryFlight(context, "JFK-STV"));
            wc.Commit(context);
        }