コード例 #1
0
        protected void InitStorage()
        {
            var database = new SimpleDatabase("MYRM_" + _name, true);

            //TODO: BUGBUG: add validation to check the data and key length
            database.CreateTable(Constants.ReservationTableName, 96, 36);
            database.CreateTable(Constants.ResourcesTableName, 96, 36);
            _transactionStorage = new TransactionStorage(database);
        }
コード例 #2
0
 public void DeleteTest1()
 {
     Transaction context = new Transaction();
     RID rid = new RID(RID.Type.FLIGHT, "test");
     Customer c = new Customer();
     HashSet<RID> reservations = new HashSet<RID> {rid};
     var db = CreateDatabase();
     TransactionStorage tr = new TransactionStorage(db);
     tr.Write(context, c, reservations);
     tr.Delete(context, c);
     List<Customer> cs = new List<Customer>(tr.GetCustomers(context));
     Assert.AreEqual(0, cs.Count);
 }
コード例 #3
0
 public void AbortTest()
 {
     Transaction context = new Transaction();
     RID rid = new RID(RID.Type.FLIGHT, "test");
     var db = CreateDatabase();
     TransactionStorage tr = new TransactionStorage(db);
     tr.Write(context, rid, new Resource(rid, 10, 11));
     //Resource res = tr.Read(context, rid);
     //Assert.AreEqual(11, res.getPrice());
     tr.Abort(context);
     var res = tr.Read(context, rid);
     Assert.IsNull(res, "Transaction aborted, but record still there");
 }
コード例 #4
0
 public void CommitTest()
 {
     Transaction context = new Transaction();
     Transaction context1 = new Transaction();
     RID rid = new RID(RID.Type.FLIGHT, Guid.NewGuid().ToString().Substring(0, 24));
     var db = CreateDatabase();
     TransactionStorage tr = new TransactionStorage(db);
     tr.Write(context, rid, new Resource(rid, 10, 11));
     Resource res = tr.Read(context1, rid);
     Assert.IsNull(res);
     tr.Prepare(context);
     tr.Commit(context);
     res = tr.Read(context, rid);
     Assert.AreEqual(11, res.getPrice());
 }
コード例 #5
0
 public void ReadWriteTest()
 {
     Transaction context = new Transaction();
     RID rid = new RID(RID.Type.FLIGHT, "test");
     Customer c = new Customer();
     HashSet<RID> reservations = new HashSet<RID> {rid};
     var db = CreateDatabase();
     TransactionStorage tr = new TransactionStorage(db);
     tr.Write(context, c, reservations);
     HashSet<RID> actual = tr.Read(context, c);
     Assert.IsTrue(reservations.SetEquals(actual));
 }
コード例 #6
0
 public void WriteDeleteBeforeCommit()
 {
     Transaction context = new Transaction();
     RID rid = new RID(RID.Type.FLIGHT, "test");
     var db = CreateDatabase();
     TransactionStorage tr = new TransactionStorage(db);
     tr.Write(context, rid, new Resource(rid, 10, 11));
     tr.Delete(context, rid);
     Resource res = tr.Read(context, rid);
     Assert.IsNull(res);
 }
コード例 #7
0
        public void SetResourcesTest()
        {
            var db = CreateDatabase();
            var target = new TransactionStorage(db);
            var resources = new Dictionary<RID, Resource>();
            var rid1 = new RID(TP.RID.Type.ROOM, "Motel6");
            resources.Add(rid1, new Resource(rid1, 1000, 20));
            var rid2 = new RID(TP.RID.Type.FLIGHT, "53");
            resources.Add(rid2, new Resource(rid2, 260, 550));

            // TODO: need to fix this because the class signiture changed
            //target.SetResources(resources);

            //var result = target.GetResources();
            //Assert.IsTrue(result.ContainsKey(rid1));
            //Assert.IsTrue(result.ContainsKey(rid2));

            //Assert.AreEqual(260, result[rid2].getCount());
            //Assert.AreEqual(550, result[rid2].getPrice());
            //Assert.AreEqual("53", result[rid2].getName());
        }
コード例 #8
0
        public void SetReservationsTest()
        {
            var customer = new Customer {Id = Guid.NewGuid()};
            var db = CreateDatabase();
            var target = new TransactionStorage(db);
            var reservations = new Dictionary<Customer, HashSet<RID>>
                                                                  {
                                                                      {
                                                                          customer,
                                                                          new HashSet<RID>
                                                                              {
                                                                                  new RID(53),
                                                                                  new RID(TP.RID.Type.ROOM, "Room")
                                                                              }
                                                                          }
                                                                  };
            // TODO: need to fix this because the class signiture changed
            //target.SetReservations(reservations);
            //var result = target.GetReservations();

            //Assert.IsTrue(result.ContainsKey(customer));
            //Assert.AreEqual(2, result[customer].Count);

            //Assert.IsTrue(result[customer].Contains(new RID(53)));
            //Assert.IsTrue(result[customer].Contains(new RID(TP.RID.Type.ROOM, "Room")));
        }
コード例 #9
0
ファイル: MyRM.cs プロジェクト: william-andrew/william-andrew
 protected void InitStorage()
 {
     var database = new SimpleDatabase("MYRM_" + _name, true);
     //TODO: BUGBUG: add validation to check the data and key length
     database.CreateTable(Constants.ReservationTableName, 96, 36);
     database.CreateTable(Constants.ResourcesTableName, 96, 36);
     _transactionStorage = new TransactionStorage(database);
 }