public void GetAllVehicles()
        {
            //Arrange
            var data = new List<Vehicle>
            {
                new Vehicle {Name = "first"},
                new Vehicle {Name = "second"}
            };

            var mockRep = new Mock<IRepository<Vehicle>>();
            mockRep.Setup(x => x.GetAll()).Returns(data.AsEnumerable());
            mockRep.Setup(x => x.Find(It.IsAny<Func<Vehicle, Boolean>>())).Returns(data.AsEnumerable());

            var mockUnit = new Mock<IMotorDepotUnitOfWork>();

            mockUnit.Setup(x => x.Vehicles).Returns(mockRep.Object);

            var service = new VehicleService(mockUnit.Object);
            Mapper.CreateMap<Vehicle, VehicleDTO>();

            //Act
            var result = service.GetVehicles().Count();

            //Assert
            mockRep.Verify(x => x.Find(It.IsAny<Func<Vehicle, Boolean>>()), Times.Once);
            Assert.AreEqual(2, result);
        }
        public void ForEach_ListWithAction_ActionPerformedOnEachItemOfList()
        {
            // Arrange
            var toAdd = new Random().Next().ToString();
            var list = new List<string> { "some", "random", "string", "items", "for", "test" };
            var enumerable = list.AsEnumerable();

            // Act
            var final = new List<string>();
            enumerable.ForEach(x => final.Add(x + toAdd));

            // Assert
            list.ForEach(x => final.Should().Contain(x + toAdd));
        }
Example #3
0
        public void TestGetWithNSub()
        {
            var rtnForGetAll = new List<User>()
            {
                new User() { Name="Amigo", DepartmentId=1, Department=new Department() { Name="開發二課"} },
                new User() { Name="Ariel", DepartmentId=1, Department=new Department() { Name="開發一課"} },
                new User() { Name="Frank", DepartmentId=1, Department=new Department() { Name="開發一課"} }
            };

            IDalService dalService = Substitute.For<IDalService>();
            dalService.GetAll().Returns(rtnForGetAll.AsEnumerable());

            var entities = dalService.GetAll();
            foreach (var entity in entities)
            {
                Debug.WriteLine(String.Format("Name:{0}, Department:{1}", entity.Name, entity.Department.Name));
            }

            Debug.WriteLine("Finish");
            //The real test here ....
        }
Example #4
0
        public void DataCalculator_Preview_ExceptOnTableValidation()
        {
            var a = Rep.GetAccount(defAccountName, eagerLoad: new string[] { "Settings.Columns" });
            if (a != null)
                using (var dc = new DataCalculator(a, Rep))
                {
                    var columns = string.Empty;
                    var colValues = a.Settings.Columns
                        .Where(c => c.ColumnType.ImportTableValidation)
                        .Select(c => c.ColumnName.ToLower())
                        .ToArray()
                        .Skip(1); //Skip one required row for take exception

                    foreach (var colName in colValues)
                        columns += (string.IsNullOrWhiteSpace(columns) ? string.Empty : ";") + colName;

                    var csvLines = new List<string>();
                    csvLines.Add(columns);

                    try
                    {
                        var l = Helpers.CSV.CSVFile.Load(csvLines.AsEnumerable<string>(),
                            tableName: "{virtual}",
                            filePath: "{virtual}",
                            tableValidator: dc.TableValidator,
                            rowFilter: dc.RowFilter);
                    }
                    catch(Exception ex)
                    {
                        var exText = ex.GetExceptionText();
                        Console.WriteLine(exText);
                        Assert.AreEqual(true, exText.Contains(colValues.First()), "Exception must contains required column name");
                        throw;
                    }
                }
        }
        public void GetAllTasks_Valid_ReturnsCorrectTasks_Test()
        {
            // TODO add property values 
            //Arrange
            var task1 = new StoredTaskRequest { Id = 0};
            var task2 = new StoredTaskRequest { Id = 1};
            var task3 = new StoredTaskRequest { Id = 2};
            var taskList = new List<StoredTaskRequest> { task1, task2, task3 }.AsQueryable();

            _repositoryMock.Setup(r => r.Read()).Returns(taskList);
            var adapter = new TaskAdapter(_repositoryMock.Object);

            //Act
            var result = adapter.Read();
            var actualTasks = result.ToList();

            //Assert
            var counter = 0;
            foreach (var actualTask in taskList.AsEnumerable())
            {
                var returnedTask = actualTasks[counter];
                // Todo add property asserts 
                Assert.IsTrue(returnedTask.Id == actualTask.Id);
                counter++;
            }

        }
Example #6
0
    public void CheckLinesTest()
    {
      Board b = new Board(7, 7, 3);
      Point p, pc;
      List<Point> result;
      List<Point> knownh, knownv, knowndl, knowndr, known;

      pc = new Point(2, 2);

      knownh = new List<Point>();
      ushort row;
      ushort col;
      ushort count;

      /* o o o o o o o o
       * o o o o o o o o
       * + + + + o o o o
       * o o o o o o o o
       * o o o o o o o o
       */
      for (row = pc.Row, col = 0, count = 0; count < 4; col++, count++)
      {
        p = new Point(row, col);
        knownh.Add(p);
        b.PlaceItem(p, 1);
      }

      result = b.CheckLines(knownh.ElementAt(0));
      Assert.AreEqual(0, result.Count);

      /* o o o o o o o o
       * o o o o o o o o
       * + + + + + o o o
       * o o o o o o o o
       * o o o o o o o o
       */
      p = new Point(row, col++);
      knownh.Add(p);
      b.PlaceItem(p, 1);

      // from right
      result = b.CheckLines(knownh.ElementAt(4));
      CollectionAssert.AreEquivalent(knownh, result);
      // from middle
      result = b.CheckLines(knownh.ElementAt(2));
      CollectionAssert.AreEquivalent(knownh, result);
      // from left
      result = b.CheckLines(knownh.ElementAt(0));
      CollectionAssert.AreEquivalent(knownh, result);

      // switch out the color
      b.ClearItem(pc);
      b.PlaceItem(pc, 2);
      // from left
      result = b.CheckLines(knownh.ElementAt(0));
      Assert.AreEqual(0, result.Count);
      // from middle
      result = b.CheckLines(knownh.ElementAt(2));
      Assert.AreEqual(0, result.Count);
      // from right
      result = b.CheckLines(knownh.ElementAt(4));
      Assert.AreEqual(0, result.Count);

      b.ClearItem(pc);
      b.PlaceItem(pc, 1);

      // more than 5
      /* o o o o o o o o
       * o o o o o o o o
       * + + + + + + o o
       * o o o o o o o o
       * o o o o o o o o
       */
      p = new Point(row, col++);
      knownh.Add(p);
      b.PlaceItem(p, 1);
      result = b.CheckLines(p);
      CollectionAssert.AreEquivalent(knownh, result);

      /* o o + o o o o o
       * o o + o o o o o
       * + + + + + + + o
       * o o + o o o o o
       * o o + o o o o o
       */
      knownv = new List<Point>();
      for (row = 0, col = pc.Col, count = 0; count < 5; row++, count++)
      {
        p = new Point(row, col);
        knownv.Add(p);
        if (!p.Equals(pc))
          b.PlaceItem(p, 1);
      }

      // from bottom
      result = b.CheckLines(p);
      CollectionAssert.AreEquivalent(knownv, result);
      // from top
      result = b.CheckLines(knownv.ElementAt(0));
      CollectionAssert.AreEquivalent(knownv, result);

      // two directions
      known = new List<Point>();
      known.AddRange(knownh.AsEnumerable());
      known.AddRange(knownv.AsEnumerable());
      // there is an extra point at the intersection
      known.Remove(pc);
      result = b.CheckLines(pc);
      CollectionAssert.AreEquivalent(known, result);

      /* o o + o o o o o
       * o o + o o o o o
       * + + + + + + + o
       * o o + + o o o o
       * o o + o + o o o
       * o o o o o + o o
       * o o o o o o + o
       */
      knowndl = new List<Point>();
      for (row = pc.Row, col = pc.Col, count = 0; count < 5; row++, col++, count++)
      {
        p = new Point(row, col);
        knowndl.Add(p);
        if (!p.Equals(pc))
          b.PlaceItem(p, 1);
      }

      // from top left (second)
      result = b.CheckLines(knowndl.ElementAt(1));
      CollectionAssert.AreEquivalent(knowndl, result);
      // from bottom right
      result = b.CheckLines(knowndl.ElementAt(4));
      CollectionAssert.AreEquivalent(knowndl, result);

      // three directions
      known.AddRange(knowndl.AsEnumerable());
      known.Remove(pc);
      result = b.CheckLines(pc);
      CollectionAssert.AreEquivalent(known, result);

      /* o o + o + o o o
       * o o + + o o o o
       * + + + + + + + o
       * o + + + o o o o
       * + o + o + o o o
       * o o + o o + o o
       * o o + o o o + o
       */
      knowndr = new List<Point>();
      for (row = 4, col = 0, count = 0; count < 5; row--, col++, count++)
      {
        p = new Point(row, col);
        knowndr.Add(p);
        if (!p.Equals(pc))
          b.PlaceItem(p, 1);
      }

      // from bottom left
      result = b.CheckLines(knowndr.ElementAt(0));
      CollectionAssert.AreEquivalent(knowndr, result);
      // from top right
      result = b.CheckLines(knowndr.ElementAt(4));
      CollectionAssert.AreEquivalent(knowndr, result);

      // four directions
      known.AddRange(knowndr.AsEnumerable());
      known.Remove(pc);
      result = b.CheckLines(pc);
      CollectionAssert.AreEquivalent(known, result);
    }
        public async Task GivenThatTenCharactersExists_WhenTryingToGetAll_ThenReturnedListContainsTenCharacters()
        {
            var charactersToReturn = new List<HouseEntity>();
            for (int i = 0; i < 10; i++)
            {
                charactersToReturn.Add(new HouseEntity() { Id = i });
            }
            var repository = MockRepository.GenerateMock<IReadOnlyRepository<HouseEntity,int>>();
            repository.Stub(x => x.GetAllAsync(CancellationToken.None,null))
                .IgnoreArguments()
                .Return(Task.FromResult(charactersToReturn.AsEnumerable()));
            var service = new HouseService(repository);

            var characters = await service.GetAllAsync();

            Assert.IsNotNull(characters);
            Assert.AreEqual(10, characters.Count());
        }
        public void GetAllUsers_Valid_ReturnsCorrectUsers_Test()
        {
            //Arrange
            var user1 = new StoredUser {Name = "name1", MetaData = "metaData1"};
            var user2 = new StoredUser {Name = "name2", MetaData = "metaData2"};
            var user3 = new StoredUser {Name = "name3", MetaData = "metaData3"};
            var list = new List<StoredUser> {user1, user2, user3}.AsQueryable();
            _repositoryMock.Setup(r => r.Read()).Returns(list);
            var adapter = new UserAdapter(_repositoryMock.Object);

            //Act
            var result = adapter.Read();
            var actualUsers = result.ToList();

            //Assert
            var counter = 0;
            foreach (var actualUser in list.AsEnumerable())
            {
                var returnedUser = actualUsers[counter];
                Assert.IsTrue(returnedUser.Name == actualUser.Name);
                Assert.IsTrue(returnedUser.MetaData == actualUser.MetaData);
                Assert.IsTrue(returnedUser.Id == actualUser.Id);
                counter++;
            }
        }
Example #9
0
        public void DataCalculator_Preview()
        {
            SqlLogEnabled = false;

            var rnd = new Random();
            rnd.Next();

            var alph = "йцукенгшщзфывапролдячсмить";

            var maxCnt = 100;
            var cityNames = Enumerable.Range(0, 3).Select(i => $"TestCity{i}").ToArray();
            var areaNames = Enumerable.Range(0, 10).Select(i => $"TestArea{i}").ToArray();
            var streetNames = Enumerable.Range(0, 100).Select(i => Enumerable.Range(0, 6).Select(n => alph[rnd.Next(alph.Length)].ToString()).Concat(c => c)).ToArray();
            var hostNames = new string[] { "testhost0.ru", "testhost1.ru" };

            try
            {
                hostNames.ToList().ForEach((h) =>
                    {
                        Rep.HostRemove(Rep.HostGet(h), saveAfterRemove: false);
                        var host = Rep.HostNew(h);
                        Rep.HostAdd(host, saveAfterInsert: false);
                    });
                Rep.SaveChanges();

                var acc = Rep.GetAccount(defAccountName, eagerLoad: new string[] { "Settings.Columns.ColumnType" });

                cityNames.ToList().ForEach((s) =>
                {
                    Rep.CityRemove(Rep.CityGet(s), saveAfterRemove: false);
                });
                Rep.SaveChanges();

                cityNames.ToList().ForEach((s) =>
                {
                    var city = Rep.CityNew(s);
                    areaNames.ToList().ForEach((a) =>
                    {
                        var area = Rep.AreaNew(a, city: city);
                        streetNames.ToList().ForEach((ss) =>
                        {
                            if (rnd.Next(5) != 0)
                                Rep.StreetNew(RoyaltyDataCalculator.Parser.Address.FromString(ss, area.Name, acc.Dictionary.Excludes.Select(e => e.Exclude)).Street, area);
                        });
                    });
                });

                Rep.SaveChanges();

                var addrCol = acc.Settings.GetColumnFor(RoyaltyRepository.Models.ColumnTypes.Address);
                var areaCol = acc.Settings.GetColumnFor(RoyaltyRepository.Models.ColumnTypes.Area);
                var cityCol = acc.Settings.GetColumnFor(RoyaltyRepository.Models.ColumnTypes.City);
                var cityHost = acc.Settings.GetColumnFor(RoyaltyRepository.Models.ColumnTypes.Host);
                var cityPhone = acc.Settings.GetColumnFor(RoyaltyRepository.Models.ColumnTypes.Phone);

                var csvLines = new List<string>();

                var colValues = acc.Settings.Columns
                    .Where(c => c.ColumnType.ImportTableValidation)
                    .Select(c => new { Name = c.ColumnName.ToLower(), Type = c.ColumnType })
                    .ToArray();

                var columns = string.Empty;
                foreach (var colName in colValues)
                    columns += (string.IsNullOrWhiteSpace(columns) ? string.Empty : ";") + colName.Name;
                csvLines.Add(columns);

                var lastAddedPhone = string.Empty;
                var genNewData = new Func<RoyaltyRepository.Models.ColumnTypes, string>(
                    (ct) => 
                    {
                        var res = string.Empty;
                        switch(ct)
                        {
                            case RoyaltyRepository.Models.ColumnTypes.Phone:
                                if (!string.IsNullOrWhiteSpace(lastAddedPhone) && rnd.Next(0, 5) == 0)
                                    res = lastAddedPhone;
                                else
                                    for (int n = 0; n < 5; n++)
                                        res += rnd.Next(10, 99).ToString();
                                break;
                            case RoyaltyRepository.Models.ColumnTypes.Address:
                                res = streetNames.Union(new string[] { "defaultPreviewStreet2" }).ToArray()[rnd.Next(0, streetNames.Length + 1)] 
                                    + ((rnd.Next(0, 5) != 0) ? ", " + rnd.Next(1,99) : string.Empty);
                                break;
                            case RoyaltyRepository.Models.ColumnTypes.Area:
                                res = areaNames.Union(new string[] { string.Empty, "defaultPreviewArea2" }).ToArray()[rnd.Next(0, areaNames.Length + 2)];
                                break;
                            case RoyaltyRepository.Models.ColumnTypes.City:
                                res = cityNames.Union(new string[] { "defaultPreviewCity1" }).ToArray()[rnd.Next(0, cityNames.Length + 1)];
                                break;
                            case RoyaltyRepository.Models.ColumnTypes.Host:
                                res = (rnd.Next(3) == 0 ? string.Empty : @"http://") 
                                    + hostNames.Union(new string[] { "testhost2.ru" }).ToArray()[rnd.Next(0, hostNames.Length + 1)]
                                    + "/" + Guid.NewGuid().ToString("N");
                                break;
                        }
                        return res;
                    }
                    );

                for (int i = 0; i < maxCnt; i++ )
                {
                    columns = string.Empty;
                    foreach (var colName in colValues)
                        columns += (string.IsNullOrWhiteSpace(columns) ? string.Empty : ";") + genNewData(colName.Type.Type);
                    csvLines.Add(columns);
                }

                Rep.SaveChanges();

                using (var dc = new DataCalculator(acc, Rep))
                {
                    var prg0 = new Helpers.PercentageProgress();
                    var prg1 = prg0.GetChild();
                    var prg2 = prg0.GetChild();
                    var prg3 = prg0.GetChild();
                    prg0.Change += (s, e) => Helpers.Log.Add($"Progress: {e.Value.ToString("N2")}");
                    var log = new Action<string>((s) => Helpers.Log.Add(s));

                    var l = Helpers.CSV.CSVFile.Load(csvLines.AsEnumerable(),
                        tableValidator: dc.TableValidator,
                        rowFilter: dc.RowFilter);

                    dc.Prepare(l.Table, i => prg1.Value = i, log);
                    var previewRes = dc.Preview(l.Table, i => prg2.Value = i, log);
                    Assert.AreEqual(l.Table.Rows.Count, previewRes.Count());

                    var readyToExport = dc.Import(previewRes.Values, null, i => prg3.Value = i, log);
                    Rep.SaveChanges();

                    Helpers.Log.Add($"Data imported and ready to export");

                    Rep.AccountDataRecordRemove(acc.Data);
                }
            }
            finally
            {
                hostNames.ToList().ForEach((s) =>
                {
                    Rep.HostRemove(Rep.HostGet(s), saveAfterRemove: false);
                });
                cityNames.ToList().ForEach((s) =>
                {
                    Rep.CityRemove(Rep.CityGet(s), saveAfterRemove: false);
                });
                Rep.SaveChanges();
                SqlLogEnabled = true;
            }
        }
Example #10
0
 public void ListObjectTest()
 {
     MapFactory.ResetAllMaps();
     var target = new List<InnType>
     {
         new InnType {DateTimeValue = DateTime.Now, DesimalValue = (decimal) 100.212, StringValue = "test"},
         new InnType {DateTimeValue = DateTime.Now, DesimalValue = (decimal) 100.212, StringValue = "test"},
         new InnType {DateTimeValue = DateTime.Now, DesimalValue = (decimal) 100.212, StringValue = "test"}
     };
     var map = MapFactory.CreateEmptyMapRule<InnType, OutType>();
     map.AddMap<InnType, OutType>(new Dictionary<string, string>
     {
         {"DateTimeValue", "DateTimeValue1"},
         {"DesimalValue", "DesimalValue1"},
         {"StringValue", "StringValue1"}
     });
     var result = target.AsEnumerable().Map().To<OutType>(map);
     Assert.IsNotNull(result);
     Assert.AreEqual(3, result.Count());
 }
 IEnumerable<Tuple<int, int>> GetReverseMaps(int count)
 {
     var results = new List<Tuple<int, int>>();
     for (int i = 0; i < count; i++)
     {
         results.Add(Tuple.Create(i, count - i - 1));
     }
     return results.AsEnumerable();
 }
        public void GetCustomerActiveAppointmentsPassed()
        {
            //arrange

            builder = new ContainerBuilder();

            var eCancelWindow = generator.Generate<int>();
            var eCustomerId = generator.Generate<int>();
            var eDateTime = generator.Generate<DateTime>();
            var eDesigner = generator.Generate<int>();
            var eFee = generator.Generate<decimal>();
            var eId = generator.Generate<int>();
            var eSpcId = generator.Generate<int>();

            List<IAppointmentData> lstAppts = new List<IAppointmentData>();
            var appointmentData = new Mock<IAppointmentData>(MockBehavior.Strict);
            appointmentData.SetupAllProperties();
            appointmentData.SetupGet(_ => _.CancelWindow).Returns(eCancelWindow);
            appointmentData.SetupGet(_ => _.CustomerId).Returns(eCustomerId);
            appointmentData.SetupGet(_ => _.DateTime).Returns(eDateTime); ;
            appointmentData.SetupGet(_ => _.DesignerId).Returns(eDesigner);
            appointmentData.SetupGet(_ => _.Fee).Returns(eFee);
            appointmentData.SetupGet(_ => _.Id).Returns(eId);
            appointmentData.SetupGet(_ => _.SpecialtyId).Returns(eSpcId);
            lstAppts.Add(appointmentData.Object);

            var desgData = new Mock<IDesignerData>(MockBehavior.Strict);
            desgData.SetupAllProperties();
            desgData.SetupGet(_ => _.Id).Returns(generator.Generate<int>());
            desgData.SetupGet(_ => _.Name).Returns(generator.Generate<string>());

            var apptRepository = new Mock<IAppointmentRepository>(MockBehavior.Strict);
            apptRepository.Setup(_ => _.GetCustomerActiveAppointments(It.IsAny<int>()))
                .Returns(lstAppts.AsEnumerable());
            var desgRepository = new Mock<IDesignerRepository>(MockBehavior.Strict);
            desgRepository.Setup(_ => _.GetDesigner(It.IsAny<int>())).Returns(desgData.Object);

            new MockTestBuilderComposition().Compose(builder);
            builder.RegisterInstance(apptRepository.Object).As<IAppointmentRepository>();
            builder.RegisterInstance(desgRepository.Object).As<IDesignerRepository>();
            builder.RegisterType<MagenicMasters.CslaLab.Customer.AppointmentViewCollection>().As<MagenicMasters.CslaLab.Contracts.Customer.IAppointmentViewCollection>();


            IoC.Container = builder.Build();
            var activator = IoC.Container.Resolve<IDataPortalActivator>();
            C.ApplicationContext.DataPortalActivator = IoC.Container.Resolve<IDataPortalActivator>();

            //act
            var objPortal = IoC.Container.Resolve<IObjectPortal<MagenicMasters.CslaLab.Contracts.Customer.IAppointmentViewCollection>>();
            var apptViewColl = objPortal.Fetch(generator.Generate<int>());

            //assert
            Assert.IsNotNull(apptViewColl);
            Assert.AreEqual(apptViewColl.First().StartDateTime, eDateTime);
            Assert.AreEqual(apptViewColl.First().DesignerName, desgData.Object.Name);

        }
            public void GetAllProtocols_Valid_ReturnsCorrectProtocols_Test()
            {
                // TODO add property values 
                //Arrange
                var protocol1 = new StoredProtocol {};
                var protocol2 = new StoredProtocol {};
                var protocol3 = new StoredProtocol {};
                var protocolList = new List<StoredProtocol> { protocol1, protocol2, protocol3 }.AsQueryable();

                _repositoryMock.Setup(r => r.Read()).Returns(protocolList);
                var adapter = new ProtocolAdapter(_repositoryMock.Object);

                //Act
                var result = adapter.Read();
                var actualProtocols = result.ToList();

                //Assert
                var counter = 0;
                foreach (var actualProtocol in protocolList.AsEnumerable())
                {
                    var returnedProtocol = actualProtocols[counter];
                    // Todo add property asserts 
                    Assert.IsTrue(returnedProtocol.StudyName == actualProtocol.StudyName);
                    counter++;
                }

            }
Example #14
0
        public void DataCalculator_Prepare()
        {
            SqlLogEnabled = false;
            try
            {
                var acc = Rep.GetAccount(defAccountName, eagerLoad: new string[] { "Settings.Columns.ColumnType" });
                var csvLines = new List<string>();

                var colValues = acc.Settings.Columns
                    .Where(c => c.ColumnType.ImportTableValidation)
                    .Select(c => new { Name = c.ColumnName.ToLower(), Type = c.ColumnType })
                    .ToArray();

                var columns = string.Empty;
                foreach (var colName in colValues)
                    columns += (string.IsNullOrWhiteSpace(columns) ? string.Empty : ";") + colName.Name;

                columns += ";test_column";

                csvLines.Add(columns);

                using (var dc = new DataCalculator(acc, Rep))
                {
                    var prg0 = new Helpers.PercentageProgress();
                    prg0.Change += (s, e) => Helpers.Log.Add($"Progress: {e.Value.ToString("N2")}");
                    var log = new Action<string>((s) => Helpers.Log.Add(s));

                    var l = Helpers.CSV.CSVFile.Load(csvLines.AsEnumerable(),
                        tableValidator: dc.TableValidator,
                        rowFilter: dc.RowFilter);

                    dc.Prepare(l.Table, i => prg0.Value = i, log);
                    Assert.AreEqual(true, acc.AdditionalColumns.Any(ad => ad.ColumnName == "test_column"));
                    Rep.SaveChanges();

                    Rep.AccountDataRecordAdditionalColumnRemove(acc.AdditionalColumns);
                }
            }
            finally
            {
                SqlLogEnabled = true;
            }
        }
 public void BugFix_InheritedInterfaceMethod()
 {
     var list = new List<int> { 123 };
     var enumerator = list.AsEnumerable().GetEnumerator();
     engine.AddRestrictedHostObject("enumerator", enumerator);
     Assert.IsTrue((bool)engine.Evaluate("enumerator.MoveNext()"));
     Assert.AreEqual(123, engine.Evaluate("enumerator.Current"));
     Assert.IsFalse((bool)engine.Evaluate("enumerator.MoveNext()"));
     engine.Execute("enumerator.Dispose()");
 }
        public void TestInaccauntableClicks()
        {
            // 1. Arrange

            // config
            _config.Setup(x => x.SubscriptionPlans)
                .Returns(
                    () =>
                        JObject.Parse(
                            "{ 0: { syncPeriodMs: 0, cyclePeriodMs: 0, clickRates: { 0: 0 } }, 1: { syncPeriodMs: 60000, cyclePeriodMs: 2592000000, clickRates: { 0: 0, 20: 10 } }, 2: { syncPeriodMs: 2592000000, cyclePeriodMs: 2592000000, clickRates: { 0: 0, 100000: 0.05, 1000000: 0.01 } }, 3: { syncPeriodMs: 2592000000, cyclePeriodMs: 2592000000, clickRates: { 0: 0, 100000: 0.05, 1000000: 0.01 } } }"));
            _config.Setup(x => x.BillingInvoiceItemDescriptionTemplate).Returns(() => "{0}");

            // stats service
            var stas = new List<TrackingStatEntity>
            {
                new TrackingStatEntity { Date = new DateTime(2014, 6, 4, 14, 28, 35, 596) },
                new TrackingStatEntity { Date = new DateTime(2014, 6, 4, 14, 28, 36, 995) },
                new TrackingStatEntity { Date = new DateTime(2014, 6, 4, 14, 28, 41, 889) },
                new TrackingStatEntity { Date = new DateTime(2014, 6, 4, 14, 28, 44, 249) },
                new TrackingStatEntity { Date = new DateTime(2014, 6, 4, 14, 28, 48, 335) }
            };
            _statService.Setup(x => x.GetTotalAsync(It.IsAny<string>(), It.IsAny<DateTime?>(), It.IsAny<DateTime?>())).Returns<string, DateTime?, DateTime?>((i, f, t) =>
            {
                IQueryable<TrackingStatEntity> r = stas.AsQueryable();
                if (f.HasValue)
                {
                    r = r.Where(s => s.Date >= f.Value);
                }

                if (t.HasValue)
                {
                    r = r.Where(s => s.Date < t.Value);
                }

                return Task.FromResult(r.LongCount());
            });

            // company service
            var company = new DomainCompany
            {
                State = ResourceState.Available,
                Subscriptions = new List<CompanySubscription>
                {
                    new CompanySubscription
                    {
                        State = ResourceState.Available,
                        Type = SubscriptionType.Basic,
                        Created = new DateTime(2014, 6, 4, 14, 25, 14, 133),
                        LastSyncDate = null,
                        LastCycleDate = new DateTime(2014, 6, 4, 14, 27, 37, 939),
                        HasTrialClicks = false
                    }
                }
            };
            var companies = new List<DomainCompany> { company };
            _companyService.Setup(x => x.ListAsync()).Returns(() => Task.FromResult(companies.AsEnumerable()));

            // balance service
            var balance = new DomainBalanceHistory();
            _balanceService.Setup(x => x.AddAsync(It.IsAny<DomainBalanceHistory>())).Returns<DomainBalanceHistory>(b =>
            {
                balance = b;
                return Task.FromResult(balance);
            });


            // 2. Act
            var syncDate = new DateTime(2014, 6, 4, 14, 28, 37, 939);
            _syncManager.SyncAsync(syncDate).Wait();


            // 3. Assert
            long actualCount = Int64.Parse(balance.Description);
            Assert.AreEqual(2, actualCount);
        }
        public void GetAllStudies_Valid_ReturnsCorrectStudies_Test()
        {
            // TODO add property values 
            //Arrange
            var study1 = new StoredStudy { };
            var study2 = new StoredStudy { };
            var study3 = new StoredStudy { };
            var studyList = new List<StoredStudy> { study1, study2, study3 }.AsQueryable();

            _repositoryMock.Setup(r => r.Read()).Returns(studyList);
            var adapter = new StudyAdapter(_repositoryMock.Object);

            //Act
            var result = adapter.Read();
            var actualStudies = result.ToList();

            //Assert
            var counter = 0;
            foreach (var actualStudy in studyList.AsEnumerable())
            {
                var returnedStudy = actualStudies[counter];
                // Todo add property asserts 
                Assert.IsTrue(returnedStudy.Name == actualStudy.Name);
                counter++;
            }

        }