Inheritance: MonoBehaviour
Example #1
0
        public SearchHints(ITradeService tradeService, ISchedulerProvider schedulerProvider)
        {
            //instaniate a filter controller so we can change the filter any time
            var filter = new FilterController<string>();

            //build a predicate when SeatchText changes
            var filterApplier = this.WhenValueChanged(t => t.SearchText)
                .Throttle(TimeSpan.FromMilliseconds(250))
                .Select(BuildFilter)
                .Subscribe(filter.Change);

            //share the connection
            var shared = tradeService.All.Connect().Publish();
            //distinct list of customers
            var customers = shared.DistinctValues(trade => trade.Customer);
            //distinct list of currency pairs
            var currencypairs = shared.DistinctValues(trade => trade.CurrencyPair);

            //create single list of all customers all items in currency ypairs
            var loader = customers.Or(currencypairs)
                .Filter(filter)     //filter strings
                .Sort(SortExpressionComparer<string>.Ascending(str=>str))
                .ObserveOn(schedulerProvider.MainThread)
                .Bind(out _hints)       //bind to hints list
                .Subscribe();

            _cleanUp = new CompositeDisposable(loader, filter, shared.Connect(), filterApplier);
        }
        public IObservable<IChangeSet<Trade, long>> Query(Func<decimal> percentFromMarket)
        {
            if (percentFromMarket == null) throw new ArgumentNullException("percentFromMarket");

            return Observable.Create<IChangeSet<Trade, long>>
                (observer =>
                 {
                     var locker = new object();
                     var filter = new FilterController<Trade>();
                     filter.Change(trade =>
                                   {
                                       var near = percentFromMarket();
                                       return Math.Abs(trade.PercentFromMarket) <= near;
                                   });

                     //re-evaluate filter periodically
                     var reevaluator = Observable.Interval(TimeSpan.FromMilliseconds(250))
                         .Synchronize(locker)
                         .Subscribe(_ => filter.Reevaluate());

                     //filter on live trades matching % specified
                     var subscriber = _tradeService.All
                         .Connect(trade=>trade.Status==TradeStatus.Live)
                         .Synchronize(locker)
                         .Filter(filter)
                         .SubscribeSafe(observer);

                     return new CompositeDisposable(subscriber, filter, reevaluator);
                 });
        }
        public void DoNotThrowAWobblyWhenRemovingaMutatedValue()
        {

            var pageController = new PageController();
            var sortController = new SortController<TestVm>(SortExpressionComparer<TestVm>.Ascending(t => t.DateFavorited ?? DateTime.MinValue));
            var filterController = new FilterController<TestVm>(myVm => myVm.Id != 0);
            var items = new ObservableCollectionExtended<TestVm>();
            var itemCache = new SourceCache<TestVm, int>(myVm => myVm.Id);

            var item1 = new TestVm(1) { DateFavorited = DateTime.Now };
            var item2 = new TestVm(2) { DateFavorited = DateTime.Now };

            itemCache.AddOrUpdate(item1);
            itemCache.AddOrUpdate(item2);

            bool error = false;
            itemCache.Connect()
                .Filter(filterController)
                .Sort(sortController)
                .Page(pageController)//error doesnt occur with paging disabled
                .Bind(items)
                .Subscribe(changes => { }, ex => error = true);

            pageController.Change(new PageRequest(1, 100));

            //NB: never errored if it was the first item which was removed
            item2.DateFavorited = null;
            itemCache.Remove(item2); //ERROR!

            Assert.IsFalse(error, "Error has been thrown");
        }
        public LiveBikesViewModel(IRealTimeModel model)
        {
            var filter = new FilterController<StationDto>(t => true);
            var filterApplier = this.WhenValueChanged(t => t.SearchText)
                                    .Throttle(TimeSpan.FromMilliseconds(250))
                                    .Select(BuildFilter)
                                    .Subscribe(filter.Change);

            var connect = model.All
                .Connect()
                .Filter(filter)
                .Transform(t => t)
                .ObserveOnDispatcher()
                .Bind(_data)
                .DisposeMany()
                .Subscribe();

            _cleanUp = new CompositeDisposable(connect, filterApplier);
        }
        public PagedDataViewer(ILogger logger, ITradeService tradeService, ISchedulerProvider schedulerProvider)
        {
            _logger = logger;

            //watch for filter changes and change filter 
            var filterController = new FilterController<Trade>(trade => true);
            var filterApplier = this.ObservePropertyValue(t => t.SearchText)
                .Throttle(TimeSpan.FromMilliseconds(250))
                .Select(propargs => BuildFilter(propargs.Value))
                .Subscribe(filterController.Change);

            //watch for changes to sort and apply when necessary
            var sortContoller = new SortController<TradeProxy>(SortExpressionComparer<TradeProxy>.Ascending(proxy=>proxy.Id));
            var sortChange = SortParameters.ObservePropertyValue(t => t.SelectedItem).Select(prop=>prop.Value.Comparer)
                    .ObserveOn(schedulerProvider.TaskPool)
                    .Subscribe(sortContoller.Change);
            
            //watch for page changes and change filter 
            var pageController = new PageController();
            var currentPageChanged = PageParameters.ObservePropertyValue(p => p.CurrentPage).Select(prop => prop.Value);
            var pageSizeChanged = PageParameters.ObservePropertyValue(p => p.PageSize).Select(prop => prop.Value);
            var pageChanger = currentPageChanged.CombineLatest(pageSizeChanged,(page, size) => new PageRequest(page, size))
                                .DistinctUntilChanged()
                                .Sample(TimeSpan.FromMilliseconds(100))
                                .Subscribe(pageController.Change);

            // filter, sort, page and bind to loaded data
            var loader = tradeService.All .Connect() 
                .Filter(filterController) // apply user filter
                .Transform(trade => new TradeProxy(trade), new ParallelisationOptions(ParallelType.Ordered, 5))
                .Sort(sortContoller, SortOptimisations.ComparesImmutableValuesOnly)
                .Page(pageController)
                .ObserveOn(schedulerProvider.MainThread)
                .Do(changes => _pageParameters.Update(changes.Response))
                .Bind(_data)     // update observable collection bindings
                .DisposeMany()   //since TradeProxy is disposable dispose when no longer required
                .Subscribe();

            _cleanUp = new CompositeDisposable(loader, filterController, filterApplier, sortChange,sortContoller, pageChanger, pageController);
        }
        public void Get_RetrieveAllNutrientAgarPlates_ShouldReturnNamesAndStatusCode200()
        {
            // Arrange
            var nutrientAgarPlatesVm = new List <NutrientAgarPlateViewModel>()
            {
                new NutrientAgarPlateViewModel()
                {
                    Id   = new Guid(),
                    Name = "Test nutrientAgarPlate 1"
                },
                new NutrientAgarPlateViewModel()
                {
                    Id   = new Guid(),
                    Name = "Test nutrientAgarPlate 1"
                }
            };

            var serviceMock = new Mock <IAutocompleteService>();

            serviceMock
            .Setup(s => s.GetAllNutrientAgarPlates())
            .Returns(nutrientAgarPlatesVm);

            var loggerMock = new Mock <ILogger>();

            var controller = new FilterController(serviceMock.Object, loggerMock.Object);

            // Act
            var response = controller.GetNutrientAgarPlates();

            // Assert
            Assert.NotNull(response);
            Assert.IsType <OkObjectResult>(response);
            var result = response as OkObjectResult;
            var models = result.Value as List <NutrientAgarPlateViewModel>;

            Assert.Equal(2, models.Count());
        }
Example #7
0
    IEnumerator SetupBattle()
    {
        GameObject playerGO = Instantiate(player, playerPos);

        playerUnit = playerGO.GetComponent <PlayerBattle>();

        GameObject bossGO = Instantiate(boss, bossPos);

        bossUnit = bossGO.GetComponent <FilterController>();

        GameObject enemy1 = Instantiate(enemy, firstEnemyPos);

        moldUnitOne = enemy1.GetComponent <MoldController>();
        moldUnitOne.SetLevel(1);

        GameObject enemy2 = Instantiate(enemy, secondEnemyPos);

        moldUnitTwo = enemy2.GetComponent <MoldController>();
        moldUnitTwo.SetLevel(1);

        firstEnemyPos.GetChild(0).GetComponent <TextMeshProUGUI>().text  = "LVL 1";
        secondEnemyPos.GetChild(0).GetComponent <TextMeshProUGUI>().text = "LVL 1";
        bossPos.GetChild(0).GetComponent <TextMeshProUGUI>().text        = "You made a mistake crossing me...";

        numEnemies  = 2;
        currEnemies = 2;

        AdjustAttacks();
        AdjustTargets();
        PopulateItems();

        StartCoroutine(PrintText("If you lose here, you will be lost for good..."));

        yield return(new WaitForSeconds(10f));

        state = BattleState.PLAYERTURN;
        PlayerTurn();
    }
Example #8
0
        public PagedDataViewer(ITradeService tradeService, ISchedulerProvider schedulerProvider)
        {
            //watch for filter changes and change filter
            var filterController = new FilterController <Trade>(trade => true);
            var filterApplier    = this.WhenValueChanged(t => t.SearchText)
                                   .Throttle(TimeSpan.FromMilliseconds(250))
                                   .Select(BuildFilter)
                                   .Subscribe(filterController.Change);

            //watch for changes to sort and apply when necessary
            var sortContoller = new SortController <TradeProxy>(SortExpressionComparer <TradeProxy> .Ascending(proxy => proxy.Id));
            var sortChange    = SortParameters.WhenValueChanged(t => t.SelectedItem).Select(prop => prop.Comparer)
                                .ObserveOn(schedulerProvider.TaskPool)
                                .Subscribe(sortContoller.Change);

            //watch for page changes and change filter
            var pageController     = new PageController();
            var currentPageChanged = PageParameters.WhenValueChanged(p => p.CurrentPage);
            var pageSizeChanged    = PageParameters.WhenValueChanged(p => p.PageSize);
            var pageChanger        = currentPageChanged.CombineLatest(pageSizeChanged, (page, size) => new PageRequest(page, size))
                                     .DistinctUntilChanged()
                                     .Sample(TimeSpan.FromMilliseconds(100))
                                     .Subscribe(pageController.Change);

            // filter, sort, page and bind to loaded data
            var loader = tradeService.All.Connect()
                         .Filter(filterController) // apply user filter
                         .Transform(trade => new TradeProxy(trade), new ParallelisationOptions(ParallelType.Ordered, 5))
                         .Sort(sortContoller, SortOptimisations.ComparesImmutableValuesOnly)
                         .Page(pageController)
                         .ObserveOn(schedulerProvider.MainThread)
                         .Do(changes => _pageParameters.Update(changes.Response))
                         .Bind(out _data) // update observable collection bindings
                         .DisposeMany()   //since TradeProxy is disposable dispose when no longer required
                         .Subscribe();

            _cleanUp = new CompositeDisposable(loader, filterController, filterApplier, sortChange, sortContoller, pageChanger, pageController);
        }
        public void SetUp()
        {
            _mockApi  = new Mock <ISearchAndCompareApi>();
            _mockFlag = new Mock <IFeatureFlags>();
            var mockGeocoder = new Mock <IGeocoder>();

            _redirectUrlMock  = new Mock <IRedirectUrlService>();
            _filterController = new FilterController(_mockApi.Object, mockGeocoder.Object,
                                                     TelemetryClientHelper.GetMocked(),
                                                     new GoogleAnalyticsClient(null, null),
                                                     _redirectUrlMock.Object,
                                                     _mockFlag.Object)
            {
                TempData = new Mock <ITempDataDictionary>().Object
            };
            _resultsFilter = new ResultsFilter
            {
                funding      = 2,
                hasvacancies = true,
                fulltime     = true,
                parttime     = false,
            };
        }
Example #10
0
        public void Get_Owner_List_For_Filter()
        {
            var routes = new RouteCollection();

            Console.WriteLine("Get Owner List For Filter.\n");
            MRPEntities db = new MRPEntities();

            HttpContext.Current = DataHelper.SetUserAndPermission();
            FilterController objFilterController = new FilterController();

            objFilterController.ControllerContext = new ControllerContext(MockHelpers.FakeUrlHelper.FakeHttpContext(), new RouteData(), objFilterController);

            int PlanId = DataHelper.GetPlanId();

            Sessions.PlanId = PlanId;
            string UserId     = Sessions.User.UserId.ToString();
            string ActiveMenu = Enums.ActiveMenu.Home.ToString();
            string viewBy     = Enums.EntityType.Tactic.ToString();
            var    result     = objFilterController.GetOwnerListForFilter(PlanId.ToString(), viewBy, ActiveMenu) as JsonResult;

            Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name + " \n The Assert Value:  " + result);
            Assert.IsNotNull(result);
        }
Example #11
0
        public void Get_TacticType_List_For_Filter()
        {
            var routes = new RouteCollection();

            Console.WriteLine("Get TacticType List For Filter.\n");
            MRPEntities db = new MRPEntities();

            HttpContext.Current = DataHelper.SetUserAndPermission();
            FilterController objFilterController = new FilterController();

            objFilterController.ControllerContext = new ControllerContext(MockHelpers.FakeUrlHelper.FakeHttpContext(), new RouteData(), objFilterController);
            objFilterController.Url = MockHelpers.FakeUrlHelper.UrlHelper();
            objFilterController.Url = new UrlHelper(new RequestContext(objFilterController.HttpContext, new RouteData()), routes);
            int PlanId = DataHelper.GetPlanId();

            Sessions.PlanId = PlanId;
            var result         = objFilterController.GetTacticTypeListForFilter(PlanId.ToString()) as JsonResult;
            var serializedData = new RouteValueDictionary(result.Data);
            var resultvalue    = serializedData["isSuccess"];

            Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name + " \n The Assert Value resultvalue:  " + resultvalue.ToString());
            Assert.AreEqual("true", resultvalue.ToString(), true);
        }
        public void DoNotThrowAWobblyWhenRemovingaMutatedValue()
        {
            var pageController   = new PageController();
            var sortController   = new SortController <TestVm>(SortExpressionComparer <TestVm> .Ascending(t => t.DateFavorited ?? DateTime.MinValue));
            var filterController = new FilterController <TestVm>(myVm => myVm.Id != 0);
            var items            = new ObservableCollectionExtended <TestVm>();
            var itemCache        = new SourceCache <TestVm, int>(myVm => myVm.Id);

            var item1 = new TestVm(1)
            {
                DateFavorited = DateTime.Now
            };
            var item2 = new TestVm(2)
            {
                DateFavorited = DateTime.Now
            };

            itemCache.AddOrUpdate(item1);
            itemCache.AddOrUpdate(item2);

            bool error = false;

            itemCache.Connect()
            .Filter(filterController)
            .Sort(sortController)
            .Page(pageController)          //error doesnt occur with paging disabled
            .Bind(items)
            .Subscribe(changes => { }, ex => error = true);

            pageController.Change(new PageRequest(1, 100));

            //NB: never errored if it was the first item which was removed
            item2.DateFavorited = null;
            itemCache.Remove(item2); //ERROR!

            error.Should().BeFalse();
        }
Example #13
0
        public void SaveLastSetOfViews()
        {
            Console.WriteLine("To Save last set data.\n");
            MRPEntities db = new MRPEntities();

            HttpContext.Current = DataHelper.SetUserAndPermission();
            FilterController objFilterController  = new FilterController();
            string           CommaSeparatedPlanId = DataHelper.GetPlanId().ToString();

            string     ViewBy        = PlanGanttTypes.Tactic.ToString();
            List <int> lstPlanids    = CommaSeparatedPlanId.Split(',').ToList().Select(id => Convert.ToInt32(id)).ToList();
            List <int> tactic        = db.Plan_Campaign_Program_Tactic.Where(id => lstPlanids.Contains(id.Plan_Campaign_Program.Plan_Campaign.PlanId)).Select(tactictype => tactictype.TacticTypeId).ToList();
            string     tactictypeids = string.Join(",", tactic);

            List <int> Owner    = db.Plans.Where(id => lstPlanids.Contains(id.PlanId)).Select(plan => plan.CreatedBy).ToList();
            string     Ownerids = string.Join(",", Owner);

            var UserID = Sessions.User.ID;

            string CommaSeparatedCustomFields = DataHelper.GetSearchFilterForCustomRestriction(UserID);

            List <string> lststatus = new List <string>();

            lststatus.Add(Enums.TacticStatusValues[Enums.TacticStatus.Created.ToString()].ToString());
            lststatus.Add(Enums.TacticStatusValues[Enums.TacticStatus.Submitted.ToString()].ToString());
            lststatus.Add(Enums.TacticStatusValues[Enums.TacticStatus.InProgress.ToString()].ToString());
            lststatus.Add(Enums.TacticStatusValues[Enums.TacticStatus.Approved.ToString()].ToString());
            lststatus.Add(Enums.TacticStatusValues[Enums.TacticStatus.Complete.ToString()].ToString());
            lststatus.Add(Enums.TacticStatusValues[Enums.TacticStatus.Decline.ToString()].ToString());

            string Status = string.Join(",", lststatus);

            var result = objFilterController.SaveLastSetofViews(CommaSeparatedPlanId, CommaSeparatedCustomFields, Ownerids, tactictypeids, Status, "", "", "") as JsonResult;

            Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name + " \n The Assert Value result.Data:  " + result.Data);
            Assert.IsNotNull(result.Data);
        }
        public LiveTradesViewer(ILogger logger,ITradeService tradeService,SearchHints searchHints)
        {
            _logger = logger;
            _searchHints = searchHints;

            var filter =  new FilterController<Trade>(trade=>true);
            var filterApplier = SearchHints.ObservePropertyValue(t => t.SearchText)
                .Throttle(TimeSpan.FromMilliseconds(250))
                .Select(propargs=>BuildFilter(propargs.Value))
                .Subscribe(filter.Change);

            var loader = tradeService.All
                .Connect(trade => trade.Status == TradeStatus.Live) //prefilter live trades only
                .Filter(filter) // apply user filter
                //if using dotnet 4.5 can parallelise 'case it's quicler
                .Transform(trade => new TradeProxy(trade),new ParallelisationOptions(ParallelType.Ordered,5))
                .Sort(SortExpressionComparer<TradeProxy>.Descending(t => t.Timestamp),SortOptimisations.ComparesImmutableValuesOnly)
                .ObserveOnDispatcher()
                .Bind(_data)   // update observable collection bindings
                .DisposeMany() //since TradeProxy is disposable dispose when no longer required
                .Subscribe();

            _cleanUp = new CompositeDisposable(loader, filter, filterApplier, searchHints);
        }
Example #15
0
        public LiveTradesViewer(ILogger logger, ITradeService tradeService, SearchHints searchHints)
        {
            _logger      = logger;
            _searchHints = searchHints;

            var filter        = new FilterController <Trade>(trade => true);
            var filterApplier = SearchHints.ObservePropertyValue(t => t.SearchText)
                                .Throttle(TimeSpan.FromMilliseconds(250))
                                .Select(propargs => BuildFilter(propargs.Value))
                                .Subscribe(filter.Change);

            var loader = tradeService.All
                         .Connect(trade => trade.Status == TradeStatus.Live) //prefilter live trades only
                         .Filter(filter)                                     // apply user filter
                                                                             //if using dotnet 4.5 can parallelise 'case it's quicler
                         .Transform(trade => new TradeProxy(trade), new ParallelisationOptions(ParallelType.Ordered, 5))
                         .Sort(SortExpressionComparer <TradeProxy> .Descending(t => t.Timestamp), SortOptimisations.ComparesImmutableValuesOnly)
                         .ObserveOnDispatcher()
                         .Bind(_data)   // update observable collection bindings
                         .DisposeMany() //since TradeProxy is disposable dispose when no longer required
                         .Subscribe();

            _cleanUp = new CompositeDisposable(loader, filter, filterApplier, searchHints);
        }
Example #16
0
        public async Task Get_ReturnsJson_ListofImages(string type, int start, int count, int expectedStatus)
        {
            // create image
            var img = MockHelpers.CreateImage(DateTime.Now.ToShortDateString(), "Caption 1", "location 1");

            // create a new user
            var pkUser = await MockHelpers.CreateNewUser(1, Guid.NewGuid().ToString(), "*****@*****.**", "Password@123", _fixture);

            // get user manager
            var _userManager = MockHelpers.CreateMockUserManager(pkUser);

            var user = new ClaimsPrincipal(new ClaimsIdentity(new List <Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, pkUser.Id)//,
                //new Claim(ClaimTypes.Name, pkUser.UserName),
                // new Claim(ClaimTypes.Email, pkUser.Email),
                //new Claim(ClaimTypes.Role, "Admin")
            }));

            // upload image
            var imgCont = new ImageController(_webHostEnvironment.Object, _configurationManager.Object, _userManager, _fixture.Context, _imapper);

            imgCont.ControllerContext = new ControllerContext()
            {
                HttpContext = new DefaultHttpContext()
                {
                    User = user
                }
            };
            ActionResult upRes = await imgCont.UploadImage(img);

            // check uploaded images are there
            var          filtContr = new FilterController(_fixture.Context, _imapper);
            ObjectResult response;

            if (type == "artistId")
            {
                response = await filtContr.Images(type, start, count, pkUser.Id) as ObjectResult;
            }
            else
            {
                response = await filtContr.Images(type, start, count) as ObjectResult;
            }
            Assert.Equal(expectedStatus, response.StatusCode);
            if (expectedStatus != StatusCodes.Status200OK)
            {
                return;
            }

            //var okResult = Assert.IsType<OkObjectResult>(response);
            if (type == "pikcha100")
            {
                var imlst = response.Value as List <PikchaImageFilterDTO>;
                // validate uploaded image
                Assert.True(imlst.Exists(i => i.Title == img.Title));

                Assert.True(File.Exists(PikchaConstants.PIKCHA_IMAGE_UPLOAD_ROOT_FOLDER + imlst[0].Thumbnail));
                Assert.True(File.Exists(PikchaConstants.PIKCHA_IMAGE_UPLOAD_ROOT_FOLDER + imlst[0].Watermark));
                return;
            }

            var lst = response.Value as List <PikchaImageFilterDTO>;

            // validate uploaded image
            Assert.True(lst.Exists(i => i.Title == img.Title));

            Assert.True(File.Exists(PikchaConstants.PIKCHA_IMAGE_UPLOAD_ROOT_FOLDER + lst[0].Thumbnail));
            Assert.True(File.Exists(PikchaConstants.PIKCHA_IMAGE_UPLOAD_ROOT_FOLDER + lst[0].Watermark));
        }
Example #17
0
 /// <summary>
 /// Creates a stream using the specified controlled filter.
 /// The controlled filter enables dynamic inline changing of the filter.
 /// </summary>
 /// <typeparam name="TObject">The type of the object.</typeparam>
 /// <typeparam name="TKey">The type of the key.</typeparam>
 /// <param name="source">The source.</param>
 /// <param name="filterController">The controlled filter.</param>
 /// <returns></returns>
 /// <exception cref="System.ArgumentNullException">filterController</exception>
 public static IObservable <IChangeSet <TObject, TKey> > Connect <TObject, TKey>(this IObservableCache <TObject, TKey> source, FilterController <TObject> filterController)
 {
     if (filterController == null)
     {
         throw new ArgumentNullException(nameof(filterController));
     }
     return(source.Connect().Filter(filterController));
 }
Example #18
0
		private void FilterDelete()
		{
			int FilterId = -1;
			if (Params.ContainsKey("FilterId"))
			{
				FilterId = Convert.ToInt32(Params["FilterId"]);
			}
			if (FilterId == -1)
			{
				return;
			}
			FilterController fc = new FilterController();
			fc.Filter_Delete(PortalId, ModuleId, FilterId);

		}
Example #19
0
		private string FilterGet()
		{
			int FilterId = -1;
			if (Params.ContainsKey("FilterId"))
			{
				FilterId = Convert.ToInt32(Params["FilterId"]);
			}
			FilterController fc = new FilterController();
			FilterInfo filter = fc.Filter_Get(PortalId, ModuleId, FilterId);
			string sOut = "{";
			sOut += Utilities.JSON.Pair("FilterId", filter.FilterId.ToString());
			sOut += ",";
			sOut += Utilities.JSON.Pair("FilterType", filter.FilterType.ToString());
			sOut += ",";
			sOut += Utilities.JSON.Pair("Find", HttpUtility.UrlEncode(filter.Find.Replace(" ", "-|-")));
			sOut += ",";
			sOut += Utilities.JSON.Pair("Replacement", HttpUtility.UrlEncode(filter.Replace.Replace(" ", "-|-")));
			sOut += "}";
			return sOut;
		}
 public void Initialise()
 {
     _source = new SourceCache<Person, string>(p=>p.Key);
     _filter = new FilterController<Person>(p=>p.Age>20);
     _results = new ChangeSetAggregator<Person, string>(_source.Connect(_filter));
 }
Example #21
0
        public static FilterController Fixture()
        {
            FilterController controller = new FilterController(new FilterRepository(), "", new LoginView());

            return(controller);
        }
        public void ViewObservationsForLoggedInUser()
        {
            using (ShimsContext.Create())
            {
                //Login user
                LoginTestUserAnalyser();
                ShimFilePath();

                // Add another role to user context
                base.AddSightingRoleToUserContext();

                UserRoleModel roleModel       = new UserRoleModel();
                IRole         newAnalyzerRole = SessionHandler.UserContext.CurrentRoles[0];
                AccountController.ChangeUserRole(Convert.ToString(newAnalyzerRole.Id), roleModel);

                // Verify role
                Assert.IsTrue(SessionHandler.UserContext.CurrentRole.Id == newAnalyzerRole.Id);

                // Set language to swedish since reference data is on that language
                SetSwedishLanguage();

                // Create controllers
                FilterController filterController = new FilterController();
                ResultController resultController = new ResultController();
                StubResultController(resultController);
                MySettingsController settingsController = new MySettingsController();

                // TODO Add tests for presentation controller data
                FormatController presentationController = new FormatController();

                //Check that no data is set to mysettings, except for map and table that should be checked by default
                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Count == 0);
                Assert.IsTrue(SessionHandler.MySettings.Presentation.Map.IsActive);
                Assert.IsTrue(SessionHandler.MySettings.Presentation.Table.IsActive);
                Assert.IsFalse(SessionHandler.MySettings.Filter.Taxa.IsActive);

                //*********************************   Set and test filter data ***************************
                //Select to filter on taxa and select taxa ids
                //SessionHandler.MySettings.Filter.TaxaSetting.IsSelected = true;

                filterController.RemoveAllFilteredTaxon("Home/Index");
                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Count == 0);

                //Use taxon 100573-Griffelblomfluga
                int[]  taxaIds = new int[] { 100573 };
                string strJson = JsonConvert.SerializeObject(taxaIds);
                filterController.AddTaxaToFilter(strJson, "Home/Index");
                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Contains(100573));
                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Count == 1);

                //****************************  Set spatial data ***************************************************
                Polygon polygon1 = CreateTestPolygon1();
                var     feature1 = new Feature(polygon1);
                var     features = new List <Feature> {
                    feature1
                };
                var    featureCollection = new FeatureCollection(features);
                string geojson           = JsonConvert.SerializeObject(featureCollection, JsonHelper.GetDefaultJsonSerializerSettings());

                // Update spatial filter
                JsonNetResult filterResult     = filterController.UpdateSpatialFilter(geojson);
                JsonModel     jsonFilterResult = (JsonModel)filterResult.Data;
                Assert.IsTrue(jsonFilterResult.Success);
                Assert.IsTrue(SessionHandler.MySettings.Filter.Spatial.IsActive == true);
                Assert.IsTrue(SessionHandler.MySettings.Filter.Spatial.Polygons.Count == 1);

                //**************************** Check map data *******************************************************
                // Sow map view for Griffelblomfluga
                int        numberOfObservations = 0;
                ViewResult result = resultController.SpeciesObservationMap();
                Assert.IsNotNull(result);

                //Get the map data to be shown
                JsonNetResult obsMap = resultController.GetObservationsAsGeoJSON();
                Assert.IsNotNull(obsMap.Data);
                var jsonMapResult = (JsonModel)obsMap.Data;
                var noObs         = (SpeciesObservationsGeoJsonModel)jsonMapResult.Data;
                numberOfObservations = noObs.Points.Features.Count;
                Assert.IsTrue(SessionHandler.MySettings.Presentation.Map.IsActive);
                Assert.IsTrue(SessionHandler.MySettings.Presentation.Table.IsActive);
                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.IsActive);

                //************************ Check table data *********************************************
                //Select to show table data from observations
                result = resultController.SpeciesObservationTable() as ViewResult;
                Assert.IsNotNull(result);
                var viewModel = result.ViewData.Model as ViewTableViewModel;
                Assert.IsNotNull(viewModel);
                //Get observations
                var obsResult = resultController.GetPagedObservationListAsJSON(1, 0, 25);
                Assert.IsNotNull(obsResult);
                JsonModel jsonResult = (JsonModel)obsResult.Data;
                List <Dictionary <string, string> > observationListResult = (List <Dictionary <string, string> >)jsonResult.Data;

                //Check observations
                Assert.IsNotNull(jsonResult);
                Assert.IsTrue(jsonResult.Success);
                Assert.IsTrue(jsonResult.Total > 5);
                Assert.IsTrue(observationListResult.Count > 5);
                Assert.IsTrue(numberOfObservations == observationListResult.Count, "Number of observations differs between Map and ObsTable");
                //Verfy observations
                BaseDataTest.VerifyObservationDataForGriffelblomfluga1000573(observationListResult);

                //*********************** Check detailsPanel ****************************************************
                string            observationGUID   = observationListResult[5]["ObservationId"];
                DetailsController detailsController = new DetailsController();

                //Act
                // Returning "hard coded" value för first observation for griffelblomfluga
                var detailsResult = detailsController.ObservationDetail(observationGUID) as ViewResult;

                //Assert
                Assert.IsNotNull(detailsResult);

                //*********************** Verfy user settings, save and load *************************************

                // Save settings
                settingsController.SaveMySettings("Home/Index");

                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Count > 0);

                //Logout TestUser
                LogoutTestUser();

                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Count == 0);
                Assert.IsTrue(SessionHandler.MySettings.Presentation.Map.IsActive);
                Assert.IsTrue(SessionHandler.MySettings.Presentation.Table.IsActive);
                Assert.IsFalse(SessionHandler.MySettings.Filter.Taxa.IsActive);

                LoginTestUserAnalyser();
                //Use taxon 100573-Griffelblomfluga
                taxaIds = new int[] { 100573 };
                strJson = JsonConvert.SerializeObject(taxaIds);
                filterController.AddTaxaToFilter(strJson, "Home/Index");

                result = resultController.SpeciesObservationTable() as ViewResult;
                Assert.IsNotNull(result);

                // Check observations in table
                obsResult = resultController.GetPagedObservationListAsJSON(1, 0, 25);
                Assert.IsNotNull(obsResult);
                jsonResult            = (JsonModel)obsResult.Data;
                observationListResult = (List <Dictionary <string, string> >)jsonResult.Data;
                Assert.IsNotNull(jsonResult);
                Assert.IsTrue(jsonResult.Success);

                Assert.IsTrue(jsonResult.Total > 5);
                Assert.IsTrue(observationListResult.Count > 5);
                Assert.IsTrue(numberOfObservations == observationListResult.Count, "Number of observations differs between saved settings and not saved settings for ObsTable");

                BaseDataTest.VerifyObservationDataForGriffelblomfluga1000573(observationListResult);


                // Reset to english language
                SetEnglishLanguage();
            }
        }
        public void GetMatchingTaxaTest()
        {
            using (ShimsContext.Create())
            {
                FilterController      filterController;
                JsonNetResult         result;
                JsonModel             jsonResult;
                List <TaxonViewModel> taxaListResult;
                String strClipboard;

                // Test get data using RowDelimiter.ReturnLinefeed
                filterController = new FilterController();
                strClipboard     = "1" + Environment.NewLine + "2" + Environment.NewLine + "4";
                result           = filterController.GetMatchingTaxa(strClipboard, RowDelimiter.ReturnLinefeed);
                jsonResult       = (JsonModel)result.Data;
                taxaListResult   = (List <TaxonViewModel>)jsonResult.Data;
                Assert.IsTrue(jsonResult.Success);
                Assert.IsTrue(jsonResult.Total == 3);
                Assert.IsTrue(taxaListResult.Count == 3);
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 1));
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 2));
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 4));


                // Test get data using RowDelimiter.Semicolon
                strClipboard   = "1;2;4";
                result         = filterController.GetMatchingTaxa(strClipboard, RowDelimiter.Semicolon);
                jsonResult     = (JsonModel)result.Data;
                taxaListResult = (List <TaxonViewModel>)jsonResult.Data;
                Assert.IsTrue(jsonResult.Success);
                Assert.IsTrue(jsonResult.Total == 3);
                Assert.IsTrue(taxaListResult.Count == 3);
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 1));
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 2));
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 4));



                // Test get data using RowDelimiter.Tab
                strClipboard   = "1\t2\t4";
                result         = filterController.GetMatchingTaxa(strClipboard, RowDelimiter.Tab);
                jsonResult     = (JsonModel)result.Data;
                taxaListResult = (List <TaxonViewModel>)jsonResult.Data;
                Assert.IsTrue(jsonResult.Success);
                Assert.IsTrue(jsonResult.Total == 3);
                Assert.IsTrue(taxaListResult.Count == 3);
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 1));
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 2));
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 4));


                // Test get data using RowDelimiter.Tab
                strClipboard   = "1|2|4";
                result         = filterController.GetMatchingTaxa(strClipboard, RowDelimiter.VerticalBar);
                jsonResult     = (JsonModel)result.Data;
                taxaListResult = (List <TaxonViewModel>)jsonResult.Data;
                Assert.IsTrue(jsonResult.Success);
                Assert.IsTrue(jsonResult.Total == 3);
                Assert.IsTrue(taxaListResult.Count == 3);
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 1));
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 2));
                Assert.IsTrue(taxaListResult.Any(x => x.TaxonId == 4));


                // Test get taxon with invalid taxon ids
                filterController = new FilterController();
                strClipboard     = "47894789473849784937849;323343443344;-342342";
                result           = filterController.GetMatchingTaxa(strClipboard, RowDelimiter.Semicolon);
                jsonResult       = (JsonModel)result.Data;
                taxaListResult   = (List <TaxonViewModel>)jsonResult.Data;
                Assert.IsTrue(jsonResult.Success);
                Assert.IsTrue(jsonResult.Total == 0);
                Assert.IsTrue(taxaListResult.Count == 0);
            }
        }
Example #24
0
        public static PursuitGainCalculations CountSingleTypeSignalPursuitParameters(SpotGazeFileData fileData, FiltersConfig filterConfig)
        {
            var mincal = fileData.Spot.Min();
            var maxcal = fileData.Spot.Max();
            var amp    = (maxcal - mincal) / 2;
            var srod   = (maxcal + mincal) / 2;

            var maxIndex  = fileData.Spot.ToList().IndexOf(maxcal);
            var minIndex  = fileData.Spot.ToList().IndexOf(mincal);
            var sinLenght = Convert.ToDouble(Math.Abs(maxIndex - minIndex));

            var kspIndexes            = new List <int>();
            var accuracyKspDiffValues = new List <double>();
            var accuracyKspSpotValues = new List <double>();

            for (int i = 0; i < fileData.Spot.Length; i++)
            {
                var xSpot = fileData.Spot[i];

                if (Math.Abs(xSpot - srod) > amp * 0.995D)
                {
                    kspIndexes.Add(i);

                    //Accuracy
                    var xEye    = fileData.Eye[i];
                    var diffVal = Math.Abs(xEye - xSpot);
                    accuracyKspDiffValues.Add(diffVal);
                    accuracyKspSpotValues.Add(Math.Abs(xSpot));
                }
            }

            var kspEyeValues  = new List <double>();
            var kspSpotValues = new List <double>();

            var results = new List <double>();

            var filteredControlWindows = new List <Dictionary <double, double> >();
            var kspDiffValues          = new List <Dictionary <double, double> >();

            //fix first sin
            var kspStartIndex = 0;

            for (int i = 0; i < kspIndexes.Count - 1; i++)
            {
                var result = kspIndexes[i + 1] - kspIndexes[i];
                if (result > 30)
                {
                    kspStartIndex = i;
                    break;
                }
            }

            //fix last sin
            var kspEndIndex = kspIndexes.Count;

            for (int y = kspIndexes.Count; y-- > 1;)
            {
                var endRsult = kspIndexes[y] - kspIndexes[y - 1];
                if (endRsult > 20)
                {
                    kspEndIndex = y;
                    break;
                }
            }

            kspIndexes = kspIndexes.Skip(kspStartIndex + 1).Take(kspEndIndex - kspStartIndex - 1).ToList();

            for (int j = 0; j < kspIndexes.Count; j++)
            {
                var index = kspIndexes[j];

                var controlWindow       = new List <double>();
                var controlTimeDeltas   = new List <double>();
                var controlWindowLength = Convert.ToInt32(Math.Round(sinLenght / 5, 0));

                if (j > 0)
                {
                    controlWindow     = fileData.Eye.Skip(index - (controlWindowLength / 2)).Take(controlWindowLength).ToList();
                    controlTimeDeltas = fileData.TimeDeltas.Skip(index - (controlWindowLength / 2)).Take(controlWindowLength).ToList();
                }
                else
                {
                    controlWindow     = fileData.Eye.Skip(index).Take(controlWindowLength).ToList();
                    controlTimeDeltas = fileData.TimeDeltas.Skip(index).Take(controlWindowLength).ToList();
                }

                if (filterConfig.FilterByButterworth)
                {
                    controlWindow = FilterController.FilterByButterworth(filterConfig, controlWindow.ToArray()).ToList();
                }

                var filteredWindowItems = new Dictionary <double, double>();
                for (int g = 0; g < controlWindow.Count(); g++)
                {
                    filteredWindowItems.Add(controlTimeDeltas[g], controlWindow[g]);
                }
                filteredControlWindows.Add(filteredWindowItems);

                double eyeValue = controlWindow.Average();

                var spotValue = fileData.Spot[index];
                var result    = eyeValue / spotValue;
                results.Add(result);
            }

            var gainCalculations = new Dictionary <string, double?>();
            var longSinGain      = results.Average();

            gainCalculations.Add("Long", longSinGain);

            var longSinW1  = accuracyKspDiffValues.Sum();
            var longSinW2  = accuracyKspSpotValues.Sum();
            var longSinAcc = 1D - (longSinW1 / longSinW2);

            var accuracyCalculations = new Dictionary <string, double?>();

            accuracyCalculations.Add("Long", longSinAcc);

            return(new PursuitGainCalculations
            {
                Gains = gainCalculations,
                Accuracies = accuracyCalculations,
                FilteredControlWindows = filteredControlWindows
            });
        }
Example #25
0
        public static PursuitGainCalculations CountCompoundSignalPursuitParameters(SpotGazeFileData fileData, FiltersConfig filterConfig)
        {
            var mncal = fileData.Spot.Min();
            var mxcal = fileData.Spot.Max();
            var amp   = (mxcal - mncal) / 2;
            var srod  = (mxcal + mncal) / 2;

            var start = fileData.Eye.FirstOrDefault(x => x == srod);


            var testValues = new List <double>();

            var kspIndexes            = new List <KeyValuePair <double, int> >();
            var accuracyKspSpotValues = new List <KeyValuePair <double, double> >();
            var accuracyKspDiffValues = new List <KeyValuePair <double, double> >();

            double sinLongStart;
            double sinMidStart;
            double sinShortStart;
            double sinLongEnd;
            double sinMidEnd;
            double sinShortEnd;

            if (fileData.FileType == FileType.Maruniec)
            {
                // maruniec do zrobienia
                sinMidStart   = 37 * Consts.TimeScaleFactorStandard;
                sinShortStart = 79 * Consts.TimeScaleFactorStandard;
            }
            else
            {
                sinLongStart = 12 * Consts.TimeScaleFactorStandard;
                sinLongEnd   = 32 * Consts.TimeScaleFactorStandard;

                sinMidStart = 40 * Consts.TimeScaleFactorStandard;
                sinMidEnd   = 68 * Consts.TimeScaleFactorStandard;

                sinShortStart = 77 * Consts.TimeScaleFactorStandard;
                sinShortEnd   = 90 * Consts.TimeScaleFactorStandard;
            }

            var unifiedTimeStamps = InputDataHelper.GetTimeStampsScaled(fileData.Time, fileData.FileType);

            for (int i = 0; i < fileData.Spot.Length; i++)
            {
                var xSpot = fileData.Spot[i];

                var sinLenght = 240D;

                if (unifiedTimeStamps[i] >= sinMidStart && unifiedTimeStamps[i] <= sinShortStart)
                {
                    sinLenght = 120D;
                }
                else if (unifiedTimeStamps[i] >= sinShortStart)
                {
                    sinLenght = 30D;
                }


                if (Math.Abs(xSpot - srod) > amp * 0.995D)
                {
                    kspIndexes.Add(new KeyValuePair <double, int>(sinLenght, i));

                    //Accuracy
                    var xEye    = fileData.Eye[i];
                    var diffVal = Math.Abs(xEye - xSpot);
                    accuracyKspDiffValues.Add(new KeyValuePair <double, double>(sinLenght, diffVal));
                    accuracyKspSpotValues.Add(new KeyValuePair <double, double>(sinLenght, Math.Abs(xSpot)));
                }
            }


            var kspEyeValues  = new List <double>();
            var kspSpotValues = new List <double>();

            var results                = new List <KeyValuePair <double, double> >();
            var isPositive             = true;
            var times                  = new List <double>();
            var filteredControlWindows = new List <Dictionary <double, double> >();
            var kspDiffValues          = new List <Dictionary <double, double> >();

            for (int j = 0; j < kspIndexes.Count; j++)
            {
                var sinLenght = kspIndexes[j].Key;
                var index     = kspIndexes[j].Value;

                var time = InputDataHelper.GetScaledTimeFromIndex(fileData, index).GetValueOrDefault();
                times.Add(time);

                var controlWindow       = new List <double>();
                var controlTimeDeltas   = new List <double>();
                var controlWindowLength = Convert.ToInt32(Math.Round(sinLenght / 5, 0));

                if (j > 0)
                {
                    controlWindow     = fileData.Eye.Skip(index - (controlWindowLength / 2)).Take(controlWindowLength).ToList();
                    controlTimeDeltas = fileData.TimeDeltas.Skip(index - (controlWindowLength / 2)).Take(controlWindowLength).ToList();
                }
                else
                {
                    controlWindow     = fileData.Eye.Skip(index).Take(controlWindowLength).ToList();
                    controlTimeDeltas = fileData.TimeDeltas.Skip(index).Take(controlWindowLength).ToList();
                }

                if (filterConfig.FilterByButterworth)
                {
                    controlWindow = FilterController.FilterByButterworth(filterConfig, controlWindow.ToArray()).ToList();
                }

                var filteredWindowItems = new Dictionary <double, double>();
                for (int g = 0; g < controlWindow.Count(); g++)
                {
                    filteredWindowItems.Add(controlTimeDeltas[g], controlWindow[g]);
                }
                filteredControlWindows.Add(filteredWindowItems);

                double eyeValue;
                if (isPositive)
                {
                    eyeValue   = controlWindow.Average(); //Max();
                    isPositive = false;
                }
                else
                {
                    eyeValue   = controlWindow.Average(); //Min();
                    isPositive = true;
                }

                if (sinLenght == 30D)
                {
                    testValues.Add(eyeValue);
                }

                //var eyeValue = fileData.Eye[index];
                var spotValue = fileData.Spot[index];
                var result    = eyeValue / spotValue;
                results.Add(new KeyValuePair <double, double>(sinLenght, result));
            }

            var longSinGain = new double?();

            if (results.Where(x => x.Key == 240D).Count() > 0)
            {
                longSinGain = results.Where(x => x.Key == 240D).Select(x => x.Value).Average();
            }

            var midSinGain = new double?();

            if (results.Where(x => x.Key == 120D).Select(x => x.Value).Count() > 0)
            {
                midSinGain = results.Where(x => x.Key == 120D).Select(x => x.Value).Average();
            }

            var shortSinGain = new double?();

            if (results.Where(x => x.Key == 30D).Select(x => x.Value).Count() > 0)
            {
                shortSinGain = results.Where(x => x.Key == 30D).Select(x => x.Value).Average();
            }

            var gainCalculations = new Dictionary <string, double?>();

            if (longSinGain.HasValue)
            {
                gainCalculations.Add("Long", longSinGain.GetValueOrDefault());
            }
            else
            {
                gainCalculations.Add("Long", null);
            }

            if (midSinGain.HasValue)
            {
                gainCalculations.Add("Mid", midSinGain.GetValueOrDefault());
            }
            else
            {
                gainCalculations.Add("Mid", null);
            }

            if (shortSinGain.HasValue)
            {
                gainCalculations.Add("Short", shortSinGain.GetValueOrDefault());
            }
            else
            {
                gainCalculations.Add("Short", null);
            }

            var longSinAcc = new double?();

            if (accuracyKspDiffValues.Where(x => x.Key == 240D).Count() > 0 && accuracyKspSpotValues.Where(x => x.Key == 240D).Count() > 0)
            {
                var longSinW1 = accuracyKspDiffValues.Where(x => x.Key == 240D).Select(x => x.Value).Sum();
                var longSinW2 = accuracyKspSpotValues.Where(x => x.Key == 240D).Select(x => x.Value).Sum();
                longSinAcc = 1D - (longSinW1 / longSinW2);
            }

            var midSinAcc = new double?();

            if (accuracyKspDiffValues.Where(x => x.Key == 120D).Count() > 0 && accuracyKspDiffValues.Where(x => x.Key == 120D).Count() > 0)
            {
                var midSinW1 = accuracyKspDiffValues.Where(x => x.Key == 120D).Select(x => x.Value).Sum();
                var midSinW2 = accuracyKspSpotValues.Where(x => x.Key == 120D).Select(x => x.Value).Sum();
                midSinAcc = 1D - (midSinW1 / midSinW2);
            }


            var shortSinAcc = new double?();

            if (accuracyKspDiffValues.Where(x => x.Key == 30D).Count() > 0 && accuracyKspDiffValues.Where(x => x.Key == 30D).Count() > 0)
            {
                var shortSinW1 = accuracyKspDiffValues.Where(x => x.Key == 30D).Select(x => x.Value).Sum();
                var shortSinW2 = accuracyKspSpotValues.Where(x => x.Key == 30D).Select(x => x.Value).Sum();
                shortSinAcc = 1D - (shortSinW1 / shortSinW2);
            }
            else
            {
                shortSinAcc = null;
            }

            var accuracyCalculations = new Dictionary <string, double?>();

            accuracyCalculations.Add("Long", longSinAcc);
            accuracyCalculations.Add("Mid", midSinAcc);
            accuracyCalculations.Add("Short", shortSinAcc);

            return(new PursuitGainCalculations {
                Gains = gainCalculations, Accuracies = accuracyCalculations,
                FilteredControlWindows = filteredControlWindows
            });
        }
        public void AddAndRemoveFilteredFieldTest()
        {
            using (ShimsContext.Create())
            {
                // Assign
                string           strClass;
                string           strFieldValue;
                string           strFieldId;
                string           strFieldName;
                string           strCompareOperator;
                string           strLogicalOperator;
                FilterController filterController;
                RedirectResult   result;
                FieldViewModel   model;
                ISpeciesObservationFieldDescription fieldDescription;

                ISpeciesObservationFieldSearchCriteria expectedField =
                    new SpeciesObservationFieldSearchCriteria()
                {
                    Class = new SpeciesObservationClass()
                    {
                        Id = SpeciesObservationClassId.DarwinCore
                    },
                    Operator = CompareOperator.Like,
                    Property = new SpeciesObservationProperty()
                    {
                        Id = SpeciesObservationPropertyId.Owner
                    },
                    Type  = DataType.String,
                    Value = "flodin"
                };

                filterController   = new FilterController();
                strClass           = "DarwinCore";
                strFieldValue      = "flodin";
                strFieldId         = "146";
                strFieldName       = "Owner";
                strCompareOperator = "LIKE";
                strLogicalOperator = "OR";

                model = new FieldViewModel();
                model.FieldDescriptionTypes = new FieldViewModel.SpeciesObservationFieldDescriptionType();
                model.FieldDescriptionTypes.FieldDescriptionTypes = new Dictionary <string, List <ISpeciesObservationFieldDescription> >();
                fieldDescription      = new SpeciesObservationFieldDescription();
                fieldDescription.Type = DataType.String;
                model.FieldDescriptionTypes.FieldDescriptionTypes.Add(strClass, new List <ISpeciesObservationFieldDescription> {
                    fieldDescription
                });

                // Act
                ActionResult viewResult = filterController.Field();

                // Test add field to MySettings
                result = filterController.AddFieldToFilter(
                    strClass,
                    strFieldValue,
                    strFieldId,
                    strFieldName,
                    strCompareOperator,
                    strLogicalOperator,
                    "Home/Index");

                // Assert
                Assert.IsNotNull(viewResult);
                Assert.IsTrue(result.Url == "Home/Index");
                Assert.AreEqual(expectedField.Type, fieldDescription.Type);
                Assert.IsTrue(SessionHandler.MySettings.Filter.Field.FieldFilterExpressions.Count == 1);
                Assert.IsTrue(SessionHandler.MySettings.Filter.Field.FieldFilterExpressions[0].Class.Id.Equals(expectedField.Class.Id));
                Assert.IsTrue(SessionHandler.MySettings.Filter.Field.FieldFilterExpressions[0].Value.Equals(expectedField.Value));
                Assert.IsTrue(SessionHandler.MySettings.Filter.Field.FieldLogicalOperator == LogicalOperator.Or);

                // Test remove field from MySettings
                result = filterController.ResetFields("Home/Index");
                Assert.IsTrue(result.Url == "Home/Index");
                Assert.IsTrue(SessionHandler.MySettings.Filter.Field.FieldFilterExpressions.Count == 0);
                Assert.IsTrue(SessionHandler.MySettings.Filter.Field.FieldLogicalOperator == LogicalOperator.And);
            }
        }
Example #27
0
        public IObservable <IChangeSet <Node <TObject, TKey>, TKey> > Run()
        {
            return(Observable.Create <IChangeSet <Node <TObject, TKey>, TKey> >(observer =>
            {
                var locker = new object();
                var filter = new FilterController <Node <TObject, TKey> >();
                filter.Change(node => node.IsRoot);

                var allData = _source.Synchronize(locker).AsObservableCache();

                //for each object we need a node which provides
                //a structure to set the parent and children
                var allNodes = allData.Connect()
                               .Synchronize(locker)
                               .Transform((t, v) => new Node <TObject, TKey>(t, v))
                               .DisposeMany()
                               .AsObservableCache();

                //as nodes change, maintain parent and children
                var parentSetter = allNodes.Connect()
                                   .Subscribe(changes =>
                {
                    var grouped = changes.GroupBy(c => _pivotOn(c.Current.Item));

                    foreach (var group in grouped)
                    {
                        var parentKey = group.Key;
                        var parent = allNodes.Lookup(parentKey);

                        if (!parent.HasValue)
                        {
                            //deal with items which have no parent
                            foreach (var change in group)
                            {
                                change.Current.Parent = null;
                                switch (change.Reason)
                                {
                                case ChangeReason.Add:
                                    break;

                                case ChangeReason.Update:
                                    {
                                        //copy children to the new node amd set parent
                                        var children = change.Previous.Value.Children.Items;
                                        change.Current.Update(updater => updater.AddOrUpdate(children));
                                        children.ForEach(child => child.Parent = change.Current);

                                        //remove from old parent if different
                                        var previous = change.Previous.Value;
                                        var previousParent = _pivotOn(previous.Item);

                                        if (!previousParent.Equals(previous.Key))
                                        {
                                            allNodes.Lookup(previousParent)
                                            .IfHasValue(n => { n.Update(u => u.Remove(change.Key)); });
                                        }

                                        break;
                                    }

                                case ChangeReason.Remove:
                                    {
                                        //remove children and null out parent
                                        var children = change.Current.Children.Items;
                                        change.Current.Update(updater => updater.Remove(children));
                                        children.ForEach(child => child.Parent = null);

                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            //deal with items have a parent
                            parent.Value.Update(updater =>
                            {
                                var p = parent.Value;

                                foreach (var change in group)
                                {
                                    var previous = change.Previous;
                                    var node = change.Current;
                                    var key = node.Key;

                                    switch (change.Reason)
                                    {
                                    case ChangeReason.Add:
                                        {
                                            // update the parent node
                                            node.Parent = p;
                                            updater.AddOrUpdate(node);

                                            break;
                                        }

                                    case ChangeReason.Update:
                                        {
                                            //copy children to the new node amd set parent
                                            var children = previous.Value.Children.Items;
                                            change.Current.Update(u => u.AddOrUpdate(children));
                                            children.ForEach(child => child.Parent = change.Current);

                                            //check whether the item has a new parent
                                            var previousItem = previous.Value.Item;
                                            var previousKey = previous.Value.Key;
                                            var previousParent = _pivotOn(previousItem);

                                            if (!previousParent.Equals(previousKey))
                                            {
                                                allNodes.Lookup(previousParent)
                                                .IfHasValue(n => { n.Update(u => u.Remove(key)); });
                                            }

                                            //finally update the parent
                                            node.Parent = p;
                                            updater.AddOrUpdate(node);

                                            break;
                                        }

                                    case ChangeReason.Remove:
                                        {
                                            node.Parent = null;
                                            updater.Remove(key);

                                            var children = node.Children.Items;
                                            change.Current.Update(u => u.Remove(children));
                                            children.ForEach(child => child.Parent = null);

                                            break;
                                        }
                                    }
                                }
                            });
                        }
                    }

                    filter.Reevaluate();
                });

                var result = allNodes.Connect(filter).SubscribeSafe(observer);

                return Disposable.Create(() =>
                {
                    result.Dispose();
                    parentSetter.Dispose();
                    allData.Dispose();
                    allNodes.Dispose();
                    filter.Dispose();
                });
            }));
        }
 public void SetUp()
 {
     commandFactory = MockRepository.GenerateStub <ICommandFactory>();
     taskManager    = MockRepository.GenerateStub <ITaskManager>();
     controller     = new FilterController(commandFactory, taskManager);
 }
        public void AddAndRemoveFilteredTaxaTest()
        {
            using (ShimsContext.Create())
            {
                int[]                 taxaIds;
                string                strJson;
                FilterController      filterController;
                RedirectResult        result;
                JsonNetResult         result2;
                JsonModel             jsonResult;
                List <TaxonViewModel> taxaListResult;

                filterController = new FilterController();
                taxaIds          = new int[] { 1, 2, 5 };
                strJson          = JsonConvert.SerializeObject(taxaIds);

                ActionResult viewResult = filterController.TaxonFromIds();
                Assert.IsNotNull(viewResult);

                // Test add taxa to MySettings
                result = filterController.AddTaxaToFilter(strJson, "Home/Index");
                Assert.IsTrue(result.Url == "Home/Index");
                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Contains(1));
                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Contains(2));
                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Contains(5));
                Assert.IsFalse(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Contains(3));

                // Test remove taxon from MySettings
                result = filterController.RemoveFilteredTaxon("Home/Index", 2);
                Assert.IsTrue(result.Url == "Home/Index");
                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Contains(1));
                Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Contains(5));
                Assert.IsFalse(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Contains(2));


                // Test Get filtered taxa
                result2        = filterController.GetFilteredTaxa();
                jsonResult     = (JsonModel)result2.Data;
                taxaListResult = (List <TaxonViewModel>)jsonResult.Data;
                Assert.IsTrue(jsonResult.Success);
                Assert.IsTrue(jsonResult.Total == 2);
                Assert.IsTrue(taxaListResult.Count == 2);
                int[] taxonIdsInList = new int[] { taxaListResult[0].TaxonId, taxaListResult[1].TaxonId };
                Assert.IsTrue(taxonIdsInList.Contains(1));
                Assert.IsTrue(taxonIdsInList.Contains(5));
                Assert.IsFalse(taxonIdsInList.Contains(2));

                // Remove all filtered taxa
                Assert.AreEqual(2, SessionHandler.MySettings.Filter.Taxa.TaxonIds.Count);
                result = filterController.RemoveAllFilteredTaxon("Home/Index");
                Assert.AreEqual("Home/Index", result.Url);
                Assert.AreEqual(0, SessionHandler.MySettings.Filter.Taxa.TaxonIds.Count);


                // Test Get filtered taxa with unexpected error
                MakeGetCurrentUserFunctionCallThrowException();
                result2    = filterController.GetFilteredTaxa();
                jsonResult = (JsonModel)result2.Data;
                Assert.IsFalse(jsonResult.Success);
                Assert.IsNull(jsonResult.Data);
            }
        }
 public void Init()
 {
     aMockSalesService = new Mock<ISalesService>();
        controller= new FilterController();
 }
Example #31
0
        private void FilteringCriterionListAction_Execute(object sender, SingleChoiceActionExecuteEventArgs e)
        {
            // Глушим стандартный полнотекстовый поиск
            standardFilterController.FullTextFilterAction.Enabled[FTS_DO_NOT_ENABLED] = false;
            ListViewClearFilter.Enabled[DO_NOT_ENABLED] = true;
            ListViewApplyFilter.Enabled[DO_NOT_ENABLED] = true;


            // В зависимости от выбранного пункта вызывается та или иная форма

            //frame = Frame;
            //view = View;
            //listView = view as DevExpress.ExpressApp.ListView;

            if (listView == null)
            {
                return;
            }

            // Находим, если задан, фильтр из модели
            string           choiceActionItemFilterString = "";
            FilterController fc = Frame.GetController <FilterController>();
            ChoiceActionItem choiceActionItem = ((SingleChoiceAction)(fc.Actions["SetFilter"])).SelectedItem;

            if (choiceActionItem != null)
            {
                choiceActionItemFilterString = choiceActionItem.Data.ToString();
            }


            if (e.SelectedChoiceActionItem.Id == "CriteriaBuilder")
            {
                // Показ формы построения запроса с помощью построителя критериев

                if (FilterIsShowihg)
                {
                    if (currentFilterId == "CriteriaBuilder")
                    {
                        FilterPanelHide();
                        return;
                    }
                }

                currentFilterId = "CriteriaBuilder";
                FilterIsShowihg = true;

                // Разблокируем кнопку применения фильтра
                ListViewApplyFilter.Enabled.Clear();
                ListViewApplyFilter.Enabled[DO_NOT_ENABLED] = true;

                // Тип объекта-фильтра
                Type filterObjType = typeof(FilteringCriterion);

                string strCriteria = this.criteriaBuilderString;

                IObjectSpace       objectSpace = frame.Application.CreateObjectSpace();
                FilteringCriterion objFilter   = objectSpace.CreateObject(filterObjType) as FilteringCriterion; // objectSpace.GetObject(currentObject);
                if (objFilter == null)
                {
                    return;
                }
                //objFilter.LV = listView;
                objFilter.objectTypeInfo = objectTypeInfo;
                //objFilter.CriteriaController = this;

                objFilter.Criterion = strCriteria; // Остаётся для построителя запросов в форме FilteringCriterion.cs
                //objFilter.AdditionalCriterionString = choiceActionItemFilterString;

                wp = objFilter as ICustomFilter;
                if (wp == null)
                {
                    return;
                }

                string DetailViewId = frame.Application.FindDetailViewId(objFilter.GetType());

                DetailView newView = frame.Application.CreateDetailView(objectSpace, DetailViewId, false, objFilter);
                newView.CreateControls();

                filterPanel.Controls.Clear();
                DevExpress.ExpressApp.Win.Layout.XafLayoutControl ctrlFilter = ((DevExpress.ExpressApp.Win.Layout.XafLayoutControl)newView.Control);
                filterPanel.Controls.Add(ctrlFilter);

                FilteringCriterionListAction.SelectedIndex = 0;

                FilterPanelShow(130);

                return;
            }

            if (e.SelectedChoiceActionItem.Data != null)
            {
                // Показ формы с полями от NonPersistent объекта, через которую формировать критерий поиска, присваивать его
                // списку и reload() этого списка

                // Разблокируем кнопку применения фильтра
                ListViewApplyFilter.Enabled.Clear();
                ListViewApplyFilter.Enabled[DO_NOT_ENABLED] = true;

                IModelDetailView node = e.SelectedChoiceActionItem.Data as IModelDetailView;

                // Тип объекта-фильтра
                Type filterObjType = node.ModelClass.TypeInfo.Type;

                string strCriteria = this.criteriaBuilderString;

                IObjectSpace  objectSpace = frame.Application.CreateObjectSpace();
                ICustomFilter objFilter   = objectSpace.CreateObject(filterObjType) as ICustomFilter;
                if (objFilter == null)
                {
                    return;
                }
                //objFilter.LV = listView;
                objFilter.objectTypeInfo = objectTypeInfo;
                //objFilter.CriteriaController = this;

                //objFilter.AdditionalCriterionString = choiceActionItemFilterString;

                //objFilter.Criterion = strCriteria;

                string DetailViewId = frame.Application.FindDetailViewId(objFilter.GetType());

                if (FilterIsShowihg & currentFilterId == DetailViewId)
                {
                    FilterPanelHide();
                    return;
                }

                currentFilterId = DetailViewId;
                FilterIsShowihg = true;

                wp = objFilter as ICustomFilter;
                if (wp == null)
                {
                    return;
                }

                DetailView newView = frame.Application.CreateDetailView(objectSpace, DetailViewId, false, objFilter);
                newView.CreateControls();

                filterPanel.Controls.Clear();
                DevExpress.ExpressApp.Win.Layout.XafLayoutControl ctrlFilter = ((DevExpress.ExpressApp.Win.Layout.XafLayoutControl)newView.Control);
                filterPanel.Controls.Add(ctrlFilter);

                FilteringCriterionListAction.SelectedIndex = 0;

                //FilterPanelShow(100);
                FilterPanelShow(GetFilterHight(newView) + 30);

                return;
            }
        }
 public void Initialise()
 {
     _source = new SourceList<Person>();
     _filter = new FilterController<Person>(p => p.Age > 20);
     _results = _source.Connect().Filter(_filter, FilterPolicy.ClearAndReplace).AsAggregator();
 }
 public static IObservable <(FilterController sender, CreateCustomSearchCriteriaBuilderEventArgs e)> WhenCreateCustomSearchCriteriaBuilder(this FilterController controller)
 => Observable
Example #34
0
 public static FilterController Fixture()
 {
     FilterController controller = new FilterController(new FilterRepository(), "", new LoginView());
     return controller;
 }
Example #35
0
 /// <summary>
 /// Filters source using the specified filter controller.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="source">The source.</param>
 /// <param name="filterController">The filter controller.</param>
 /// <returns></returns>
 /// <exception cref="System.ArgumentNullException">source
 /// or
 /// filterController</exception>
 public static IObservable <IChangeSet <T> > Where <T>(this IObservable <IChangeSet <T> > source, FilterController <T> filterController)
 {
     if (source == null)
     {
         throw new ArgumentNullException(nameof(source));
     }
     if (filterController == null)
     {
         throw new ArgumentNullException(nameof(filterController));
     }
     return(source.Filter(filterController));
 }
        public void ViewObservations()
        {
            //Arrange
            // Set language to swedish since reference data is on that language
            SetSwedishLanguage();
            FilterController filterController = new FilterController();
            ResultController resultController = new ResultController();

            // TODO Add tests for presentation controller data
            FormatController presentationController = new FormatController();

            //Act and Assert
            Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Count == 0);

            filterController.RemoveAllFilteredTaxon("Home/Index");
            Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Count == 0);

            int[]  taxaIds = new int[] { 100573 };
            string strJson = JsonConvert.SerializeObject(taxaIds);

            filterController.AddTaxaToFilter(strJson, "Home/Index");
            Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Contains(100573));
            Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.TaxonIds.Count == 1);

            //****************************  Set spatial data ***************************************************

            Polygon polygon1 = CreateTestPolygon1();
            var     feature1 = new Feature(polygon1);
            var     features = new List <Feature> {
                feature1
            };
            var    featureCollection = new FeatureCollection(features);
            string geojson           = JsonConvert.SerializeObject(featureCollection, JsonHelper.GetDefaultJsonSerializerSettings());
            // Update spatial filter
            JsonNetResult filterResult     = filterController.UpdateSpatialFilter(geojson);
            JsonModel     jsonFilterResult = (JsonModel)filterResult.Data;

            Assert.IsTrue(jsonFilterResult.Success);
            Assert.IsTrue(SessionHandler.MySettings.Filter.Spatial.IsActive == true);
            Assert.IsTrue(SessionHandler.MySettings.Filter.Spatial.Polygons.Count == 1);

            //**************************** Check map data *******************************************************
            // Sow map view for Griffelblomfluga
            ViewResult pvResult = resultController.SpeciesObservationMap();

            Assert.IsNotNull(pvResult);
            // Test that correct view is returned, Todo: No view is returned, delete?
            // Assert.AreEqual("SpeciesObservationMap", pvResult.ViewName);
            //Get the map data to be shown
            JsonNetResult obsMap = resultController.GetObservationsAsGeoJSON();

            Assert.IsNotNull(obsMap.Data);
            var jsonMapResult        = (JsonModel)obsMap.Data;
            var noObs                = (SpeciesObservationsGeoJsonModel)jsonMapResult.Data;
            int numberOfObservations = noObs.Points.Features.Count;

            //Check settings
            Assert.IsTrue(SessionHandler.MySettings.Presentation.Map.IsActive);
            Assert.IsFalse(SessionHandler.MySettings.Presentation.Table.IsActive);
            Assert.IsTrue(SessionHandler.MySettings.Filter.Taxa.IsActive);

            //************************ Check table data *********************************************

            var result = resultController.SpeciesObservationTable() as ViewResult;

            Assert.IsNotNull(result);
            // Test that correct view is returned
            Assert.AreEqual("Table", result.ViewName);

            var viewModel = result.ViewData.Model as ViewTableViewModel;

            Assert.IsNotNull(viewModel);


            var obsResult = resultController.GetPagedObservationListAsJSON(1, 0, 25);

            Assert.IsNotNull(obsResult);

            JsonModel jsonResult = (JsonModel)obsResult.Data;
            List <Dictionary <string, string> > observationListResult = (List <Dictionary <string, string> >)jsonResult.Data;

            Assert.IsNotNull(jsonResult);
            Assert.IsTrue(jsonResult.Success);

            Assert.IsTrue(jsonResult.Total > 20);
            Assert.IsTrue(observationListResult.Count > 20);
            Assert.IsTrue(numberOfObservations == observationListResult.Count, "Number of observations differs between Map and ObsTable");


            BaseDataTest.VerifyObservationDataForGriffelblomfluga1000573(observationListResult);

            //*********************** Check detailsPanel ****************************************************
            string            observationGUID   = observationListResult[20]["ObservationId"];
            DetailsController detailsController = new DetailsController();

            //Act
            // Returning "hard coded" value för first observation for griffelblomfluga
            var detailsResult = detailsController.ObservationDetail(observationGUID) as ViewResult;

            //Assert
            Assert.IsNotNull(detailsResult);
            var detailsViewModel = detailsResult.ViewData.Model as ObservationDetailViewModel;

            Assert.IsNotNull(detailsViewModel);
            // Test that correct view is returned
            Assert.AreEqual("Detail", detailsResult.ViewName);

            //Check number of properties
            Assert.IsTrue(detailsViewModel.Fields.Count > 10);


            // Reset to english language
            SetEnglishLanguage();
        }
Example #37
0
        public void SingleSlotOperations()
        {
            // Arrange
            TimeController      tc = new TimeController();
            FilterController    fc = new FilterController();
            HttpResponseMessage response;
            long currentId;
            Slot foundSlot;

            DateTime start   = DateTime.Today;
            DateTime end     = DateTime.Now;
            string   desc    = "A daily dummy job";
            string   project = "Test";

            // Act
            Dictionary <string, string> data = new Dictionary <string, string>
            {
                { "ID", "#" },
                { "Start", start.ToString("yyyy-MM-ddTHH:mm:ss") }, // Firefox
                { "End", end.ToString("yyyy-MM-ddTHH:mm") },        // Chrome
                { "Description", desc },
                { "Project", project },
            };

            response  = tc.Post(new FormDataCollection(data));
            foundSlot = fc.GetSlots().First();
            currentId = foundSlot.ID;

            // Assert
            Assert.IsTrue(response.IsSuccessStatusCode);
            Assert.IsTrue(Math.Abs(foundSlot.Start.Subtract(start).TotalMinutes) < 1);
            Assert.IsTrue(Math.Abs(foundSlot.End.Subtract(end).TotalMinutes) < 1);
            Assert.AreEqual(foundSlot.Description, desc);
            Assert.AreEqual(foundSlot.Project, project);

            // Act
            foundSlot = tc.Get(currentId);

            // Assert
            Assert.IsTrue(Math.Abs(foundSlot.Start.Subtract(start).TotalMinutes) < 1);
            Assert.IsTrue(Math.Abs(foundSlot.End.Subtract(end).TotalMinutes) < 1);
            Assert.AreEqual(foundSlot.Description, desc);
            Assert.AreEqual(foundSlot.Project, project);

            // Act
            string newDesc = "An updated activity description";

            data["ID"]          = currentId.ToString();
            data["Description"] = newDesc;
            response            = tc.Post(new FormDataCollection(data));
            foundSlot           = tc.Get(currentId);

            // Assert
            Assert.IsTrue(response.IsSuccessStatusCode);
            Assert.IsTrue(Math.Abs(foundSlot.Start.Subtract(start).TotalMinutes) < 1);
            Assert.IsTrue(Math.Abs(foundSlot.End.Subtract(end).TotalMinutes) < 1);
            Assert.AreEqual(foundSlot.Description, newDesc);
            Assert.AreEqual(foundSlot.Project, project);

            // Act
            response = tc.Delete(currentId);

            // Assert
            Assert.IsTrue(response.IsSuccessStatusCode);

            // Act
            try
            {
                foundSlot = tc.Get(currentId);
                Assert.Fail();
            }
            catch (HttpResponseException)
            {
                Assert.Pass();
            }
        }
Example #38
0
		private void FilterSave()
		{
			FilterInfo filter = new FilterInfo();
			filter.FilterId = -1;
			filter.ModuleId = ModuleId;
			filter.PortalId = PortalId;
			if (Params.ContainsKey("FilterId"))
			{
				filter.FilterId = Convert.ToInt32(Params["FilterId"]);
			}
			if (Params.ContainsKey("Find"))
			{
				filter.Find = Params["Find"].ToString();
			}
			if (Params.ContainsKey("Replacement"))
			{
				filter.Replace = Params["Replacement"].ToString();
			}
			if (Params.ContainsKey("FilterType"))
			{
				filter.FilterType = Params["FilterType"].ToString();
			}

			FilterController fc = new FilterController();
			filter = fc.Filter_Save(filter);
		}
Example #39
0
 public static void SwitchFilter(this FilterController controller, FILTER_TYPE type, int index)
 {
     controller.InvokeMethod("OnClickBtn", controller.GetField <ButtonArray[]>("BtnArray")[(int)type][index].gameObject);
 }
Example #40
0
 public void Initialise()
 {
     _source  = new SourceCache <Person, string>(p => p.Key);
     _filter  = new FilterController <Person>(p => p.Age > 20);
     _results = new ChangeSetAggregator <Person, string>(_source.Connect(_filter));
 }
 public FilterControllerFixtureWithClearAndReplace()
 {
     _source  = new SourceList <Person>();
     _filter  = new FilterController <Person>(p => p.Age > 20);
     _results = _source.Connect().Filter(_filter).AsAggregator();
 }
 public void Initialise()
 {
     _source  = new SourceList <Person>();
     _filter  = new FilterController <Person>(p => p.Age > 20);
     _results = _source.Connect().Filter(_filter, FilterPolicy.CalculateDiffSet).AsAggregator();
 }
Example #43
0
        public void Can_Filter()
        {
            //Arrange
            Mock <ISportHalRepository> mock = new Mock <ISportHalRepository>();

            mock.Setup(m => m.SportsHall).Returns(new SportsHall[]
            {
                new SportsHall
                {
                    Length = 100,
                    Width  = 50,
                    NumberOfDressingSpace = 40,
                    NumberOfShowers       = 10,
                    OpenTime       = new DateTime(1990, 1, 1, 8, 0, 0),
                    CloseTime      = new DateTime(1990, 1, 1, 17, 0, 0),
                    Price          = 100,
                    SportsBuilding = new SportsBuilding
                    {
                        Name        = "TrefPunt",
                        Canteen     = true,
                        City        = "Rijsbergen",
                        Street      = "Rechtweg",
                        PostalCode  = "4891 CP",
                        HouseNumber = 5,
                    },
                    SportsHallSports = new SportsHallSports[]
                    {
                        new SportsHallSports {
                            SportsHallId = 1, Sport = new Sport {
                                Name = "Voetbal"
                            }
                        },
                        new SportsHallSports {
                            SportsHallId = 1, Sport = new Sport {
                                Name = "Badminton"
                            }
                        },
                        new SportsHallSports {
                            SportsHallId = 1, Sport = new Sport {
                                Name = "Basketbal"
                            }
                        }
                    }
                },
                new SportsHall
                {
                    Length = 100,
                    Width  = 50,
                    NumberOfDressingSpace = 40,
                    NumberOfShowers       = 10,
                    OpenTime       = new DateTime(1990, 1, 1, 8, 0, 0),
                    CloseTime      = new DateTime(1990, 1, 1, 17, 0, 0),
                    Price          = 100,
                    SportsBuilding = new SportsBuilding
                    {
                        Name        = "TrefPunt",
                        Canteen     = true,
                        City        = "Rijsbergen",
                        Street      = "Rechtweg",
                        PostalCode  = "4891 CP",
                        HouseNumber = 5,
                    },
                    SportsHallSports = new SportsHallSports[]
                    {
                        new SportsHallSports {
                            SportsHallId = 2, Sport = new Sport {
                                Name = "Voetbal"
                            }
                        },
                        new SportsHallSports {
                            SportsHallId = 2, Sport = new Sport {
                                Name = "Badminton"
                            }
                        },
                    }
                }, new SportsHall
                {
                    Length = 100,
                    Width  = 50,
                    NumberOfDressingSpace = 40,
                    NumberOfShowers       = 10,
                    OpenTime       = new DateTime(1990, 1, 1, 8, 0, 0),
                    CloseTime      = new DateTime(1990, 1, 1, 17, 0, 0),
                    Price          = 100,
                    SportsBuilding = new SportsBuilding
                    {
                        Name        = "TrefPunt",
                        Canteen     = false,
                        City        = "Rijsbergen",
                        Street      = "Rechtweg",
                        PostalCode  = "4891 CP",
                        HouseNumber = 5,
                    },
                    SportsHallSports = new SportsHallSports[]
                    {
                        new SportsHallSports {
                            SportsHallId = 1, Sport = new Sport {
                                Name = "Voetbal"
                            }
                        },
                        new SportsHallSports {
                            SportsHallId = 1, Sport = new Sport {
                                Name = "Badminton"
                            }
                        },
                        new SportsHallSports {
                            SportsHallId = 1, Sport = new Sport {
                                Name = "Basketbal"
                            }
                        }
                    }
                },
                new SportsHall
                {
                    Length = 100,
                    Width  = 50,
                    NumberOfDressingSpace = 50,
                    NumberOfShowers       = 20,
                    OpenTime       = new DateTime(1990, 1, 1, 8, 0, 0),
                    CloseTime      = new DateTime(1990, 1, 1, 17, 0, 0),
                    Price          = 100,
                    SportsBuilding = new SportsBuilding
                    {
                        Name        = "DeZaal",
                        Canteen     = true,
                        City        = "Etten-Leur",
                        Street      = "Scheefweg",
                        PostalCode  = "2000 GP",
                        HouseNumber = 4,
                    },
                    SportsHallSports = new SportsHallSports[]
                    {
                        new SportsHallSports {
                            SportsHallId = 1, Sport = new Sport {
                                Name = "Voetbal"
                            }
                        },
                        new SportsHallSports {
                            SportsHallId = 1, Sport = new Sport {
                                Name = "Basketbal"
                            }
                        },
                    }
                },
                new SportsHall
                {
                    Length = 50,
                    Width  = 20,
                    NumberOfDressingSpace = 40,
                    NumberOfShowers       = 10,
                    OpenTime       = new DateTime(1990, 1, 1, 8, 0, 0),
                    CloseTime      = new DateTime(1990, 1, 1, 17, 0, 0),
                    Price          = 100,
                    SportsBuilding = new SportsBuilding
                    {
                        Name        = "DeZaal",
                        Canteen     = true,
                        City        = "Etten-Leur",
                        Street      = "Scheefweg",
                        PostalCode  = "2000 GP",
                        HouseNumber = 4,
                    },
                    SportsHallSports = new SportsHallSports[]
                    {
                        new SportsHallSports {
                            SportsHallId = 1, Sport = new Sport {
                                Name = "Badminton"
                            }
                        },
                        new SportsHallSports {
                            SportsHallId = 1, Sport = new Sport {
                                Name = "Basketbal"
                            }
                        }
                    }
                },
            }



                                                  );

            FilterController controller = new FilterController(mock.Object);

            //Act
            FilterViewModel model = controller.FilterView("Basketbal", null, 100, 50, 20, 10, "on", false, null, null, 100)
                                    .ViewData.Model as FilterViewModel;

            //Assert
            IEnumerable <SportsHall> result = model.SportsHalls;

            SportsHall[] sporthallArray = result.ToArray();
            Assert.True(sporthallArray.Length == 2);
            //Hall 1
            Assert.Equal(20, sporthallArray[0].NumberOfShowers);
            Assert.Equal(50, sporthallArray[0].NumberOfDressingSpace);
            Assert.True(sporthallArray[0].SportsHallSports.Select(x => x.Sport).ToList().Count() == 2);
            Assert.Equal(true, sporthallArray[0].SportsBuilding.Canteen);
            //Hall 2
            Assert.Equal(10, sporthallArray[1].NumberOfShowers);
            Assert.Equal(40, sporthallArray[1].NumberOfDressingSpace);
            Assert.True(sporthallArray[1].SportsHallSports.Select(x => x.Sport).ToList().Count() == 3);
            Assert.Equal(true, sporthallArray[1].SportsBuilding.Canteen);
        }