public void MarkersShouldSetCorrectly()
        {
            const int MAX_MARKERS    = 5;
            const int EXCLUSION_AREA = 1;

            var markerPrefab = new GameObject().AddComponent <UserMarkerObject>();
            var overlay      = new GameObject();

            Func <float, float, Vector3> coordToMapPosFunc = (x, y) => { return(new Vector3(x, y, 0)); };

            // create scenes to test
            var scenes = new List <HotScenesController.HotSceneInfo>();

            scenes.Add(CreateSceneInfo(new Vector2Int(0, 0)));
            scenes.Add(CreateSceneInfo(new Vector2Int(3, 4)));
            scenes.Add(CreateSceneInfo(new Vector2Int(-4, -4)));

            // create handler
            MarkersHandler handler = new MarkersHandler(markerPrefab, overlay.transform, MAX_MARKERS, coordToMapPosFunc);

            Assert.AreEqual(MAX_MARKERS, handler.availableMarkers.Count);
            Assert.AreEqual(0, handler.usedMarkers.Count);

            // set exclusion area and set markers for scenes
            handler.SetExclusionArea(Vector2Int.zero, EXCLUSION_AREA);
            handler.SetMarkers(scenes);

            // check pools count and marker hidden by exclusion area
            Assert.AreEqual(MAX_MARKERS - scenes.Count, handler.availableMarkers.Count);
            Assert.AreEqual(scenes.Count, handler.usedMarkers.Count);
            Assert.AreEqual(scenes.Count - 1, GetActiveGameObjectsInParent(overlay.transform), "A marker should be hidden by exclusion area");

            // move exclusion area and check markers hidden by exclusion area
            handler.SetExclusionArea(new Vector2Int(6, 6), EXCLUSION_AREA);
            Assert.AreEqual(scenes.Count, GetActiveGameObjectsInParent(overlay.transform), "All markers should be visible");

            // remove a scene and check pools count
            scenes.RemoveAt(0);
            handler.SetMarkers(scenes);
            Assert.AreEqual(MAX_MARKERS - scenes.Count, handler.availableMarkers.Count);
            Assert.AreEqual(scenes.Count, handler.usedMarkers.Count);

            handler.Dispose();
            UnityEngine.Object.Destroy(markerPrefab);
            UnityEngine.Object.Destroy(overlay);
        }
 private void OnScenesFetched(List <HotScenesController.HotSceneInfo> sceneList)
 {
     markersHandler.SetMarkers(sceneList);
 }