public void TestSqlListBillReaderWithFilterByDateTime()
        {
            IList <BillInfo> bills  = new List <BillInfo>();
            List <int>       newIds = new List <int> {
                _currId + 1, _currId + 2, _currId + 3, _currId + 4
            };
            IDictionary <int, DateTime> duedates = new Dictionary <int, DateTime>
            {
                { newIds[0], new DateTime(1990, 10, 1) },
                { newIds[1], new DateTime(1990, 10, 2) },
                { newIds[2], new DateTime(1990, 10, 3) },
                { newIds[3], new DateTime(1990, 10, 4) }
            };

            foreach (int expectedId in newIds)
            {
                BillInfo bill = GenerateRandomBillInfo(expectedId);
                bill.DueDate = duedates[expectedId];
                AddToDb(bill);
                bills.Add(bill);
            }

            SqliteDbBillReaderWriter sqliteReader = new SqliteDbBillReaderWriter(_connString);
            IList <BillInfo>         retBills     = sqliteReader.GetBillByFilter(
                bill => bill.DueDate >= new DateTime(1990, 10, 2) && bill.DueDate <= new DateTime(1990, 10, 3));

            Assert.AreEqual(retBills.Count, 2);
            Assert.AreEqual(retBills[0].Id, newIds[1]);
            Assert.AreEqual(retBills[1].Id, newIds[2]);
        }
        public void TestSqlListBillReaderWithFilterByPaidStatus()
        {
            List <BillInfo> bills  = new List <BillInfo>();
            List <int>      newIds = new List <int> {
                _currId + 1, _currId + 2, _currId + 3, _currId + 4
            };
            IDictionary <int, bool> paidstatus = new Dictionary <int, bool>
            {
                { newIds[0], true },
                { newIds[1], false },
                { newIds[2], true },
                { newIds[3], true }
            };

            foreach (int expectedId in newIds)
            {
                BillInfo bill = GenerateRandomBillInfo(expectedId);
                bill.IsAlreadyPaid = paidstatus[expectedId];
                AddToDb(bill);
                bills.Add(bill);
            }

            SqliteDbBillReaderWriter sqliteReader = new SqliteDbBillReaderWriter(_connString);
            IList <BillInfo>         paidBills    = sqliteReader.GetBillByFilter(bill => bill.IsAlreadyPaid);

            Assert.AreEqual(paidBills.Count, 3);
            Assert.AreEqual(paidBills[0].Id, newIds[0]);
            Assert.AreEqual(paidBills[1].Id, newIds[2]);
            Assert.AreEqual(paidBills[2].Id, newIds[3]);

            IList <BillInfo> unpaidBills = sqliteReader.GetBillByFilter(bill => !bill.IsAlreadyPaid);

            Assert.AreEqual(unpaidBills.Count, 1);
            Assert.AreEqual(unpaidBills[0].Id, newIds[1]);
        }
        public void TestSqlListBillReaderWithFilterById()
        {
            IList <BillInfo> bills = new List <BillInfo>();

            foreach (int expectedId in new List <int> {
                _currId + 1, _currId + 2, _currId + 3
            })
            {
                BillInfo bill = GenerateRandomBillInfo(expectedId);
                AddToDb(bill);
                bills.Add(bill);
            }

            SqliteDbBillReaderWriter sqliteReader = new SqliteDbBillReaderWriter(_connString);
            IList <BillInfo>         retBills     = sqliteReader.GetBillByFilter(bill => bill.Id == _currId + 2);

            Assert.IsTrue(retBills[0].SameData(bills[1]));
            Assert.AreEqual(retBills[0].Id, bills[1].Id);

            IList <BillInfo> retBills2 = sqliteReader.GetBillByFilter(bill => bill.Id == -1);

            Assert.AreEqual(retBills2.Count, 0);
        }