public static string DisplayName(this TrackConfiguration trackConfiguration)
        {
            switch (trackConfiguration)
            {
            case TrackConfiguration.Track1:
                return("Track 1 (T1)");

            case TrackConfiguration.Track2:
                return("Track 2 (T2)");

            case TrackConfiguration.Track3:
                return("Track 3 (T3)");

            case TrackConfiguration.Track4:
                return("Track 4 (T4)");

            case TrackConfiguration.Track5:
                return("Track 5 (T5)");

            case TrackConfiguration.Track6:
                return("Track 6 (T6)");

            case TrackConfiguration.Track7:
                return("Track 7 (T7)");

            default:
                throw new InvalidOperationException();
            }
        }
 public OnvifSetTrackConfiguration(string uri, string userName, string password, string recordingToken, string trackToken, TrackConfiguration config)
     : base(uri, userName, password)
 {
     RecordingToken = recordingToken;
     TrackToken     = trackToken;
     Config         = config;
 }
Пример #3
0
        public static void RedSlimeTwoYCrossesXYY2_ProgenyACrossesY2_ProgenyBCrossesZ_TwoBlueDamageHasDisabledBattleBots_Survived()
        {
            var redPlayerActions = PlayerActionFactory.CreateDoubleActionList(new PlayerActionType?[]
            {
                PlayerActionType.MoveRed, PlayerActionType.ChangeDeck,
                PlayerActionType.Charlie, null,
                null, null,
                PlayerActionType.BattleBots, null,
                null, null,
                null, null,
                null, null,
                null, null,
                null, null,
                PlayerActionType.BattleBots, null
            }).ToList();

            redPlayerActions.Add(new PlayerAction(PlayerActionType.MoveBlue, PlayerActionType.BattleBots, PlayerActionType.AdvancedSpecialization));
            var players = new List <Player>
            {
                new Player(redPlayerActions, 0, PlayerColor.Red, PlayerSpecialization.SpecialOps),
                new Player(PlayerActionFactory.CreateSingleActionList(ComputerMaintenanceActions), 1, PlayerColor.Green)
            };
            const TrackConfiguration internalTrack = TrackConfiguration.Track7;
            const int timeAppears = 4;

            const int  blueDamage         = 2;
            const int  whiteDamage        = 0;
            const int  redDamage          = 0;
            const bool isDefeated         = false;
            const bool isSurvived         = true;
            const bool battleBotsDisabled = false;

            SlimeBHelper(isDefeated, isSurvived, internalTrack, timeAppears, players, blueDamage, redDamage, whiteDamage, battleBotsDisabled);
        }
Пример #4
0
        public static void RedSlimeTwoYCrossesXYY2Z_ProgenyACrossesY2Z_ProgenyBCrossesNoBreakpoints_TwoRedDamageTwoWhiteDamageHasDisabledBattleBots_Survived()
        {
            var players = new List <Player>
            {
                new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[]
                {
                    PlayerActionType.MoveBlue,
                    PlayerActionType.Charlie,
                    null,
                    PlayerActionType.ChangeDeck,
                    null,
                    null,
                    null,
                    null,
                    null,
                    PlayerActionType.BattleBots
                }), 0, PlayerColor.Red),
                new Player(PlayerActionFactory.CreateSingleActionList(ComputerMaintenanceActions), 1, PlayerColor.Green)
            };
            const TrackConfiguration internalTrack = TrackConfiguration.Track7;
            const int timeAppears = 4;

            const int  blueDamage         = 0;
            const int  whiteDamage        = 2;
            const int  redDamage          = 2;
            const bool isDefeated         = false;
            const bool isSurvived         = true;
            const bool battleBotsDisabled = true;

            SlimeBHelper(isDefeated, isSurvived, internalTrack, timeAppears, players, blueDamage, redDamage, whiteDamage, battleBotsDisabled);
        }
Пример #5
0
        public static void RedSlimeNoYCrossesX_NoDamageHasDisabledBattleBots_Defeated()
        {
            var players = new List <Player>
            {
                new Player(PlayerActionFactory.CreateDoubleActionList(new PlayerActionType?[]
                {
                    PlayerActionType.MoveBlue, PlayerActionType.Charlie,
                    PlayerActionType.MoveRed, PlayerActionType.MoveRed,
                    PlayerActionType.ChangeDeck, null,
                    null, null,
                    PlayerActionType.BattleBots, null,
                    PlayerActionType.BattleBots, null
                }), 0, PlayerColor.Blue, PlayerSpecialization.EnergyTechnician),
                new Player(PlayerActionFactory.CreateSingleActionList(ComputerMaintenanceActions), 1, PlayerColor.Green)
            };


            const TrackConfiguration internalTrack = TrackConfiguration.Track1;
            const int timeAppears = 3;

            const int  blueDamage         = 0;
            const int  whiteDamage        = 0;
            const int  redDamage          = 0;
            const bool isDefeated         = true;
            const bool isSurvived         = false;
            const bool battleBotsDisabled = true;


            SlimeBHelper(isDefeated, isSurvived, internalTrack, timeAppears, players, blueDamage, redDamage, whiteDamage, battleBotsDisabled);
        }
Пример #6
0
        public Game(
            IList <Player> players,
            IList <InternalThreat> internalThreats,
            IList <ExternalThreat> externalThreats,
            IList <Threat> bonusThreats,
            IDictionary <ZoneLocation, TrackConfiguration> externalTrackConfigurationsByZone,
            TrackConfiguration internalTrackConfiguration,
            ILookup <ZoneLocation, DamageToken> initialDamage)
        {
            EventMaster   = new EventMaster();
            GameStatus    = GameStatus.InProgress;
            NumberOfTurns = 12;
            var externalTracksByZone = externalTrackConfigurationsByZone.ToDictionary(
                trackConfigurationWithZone => trackConfigurationWithZone.Key,
                trackConfigurationWithZone => new Track(trackConfigurationWithZone.Value));
            var internalTrack = new Track(internalTrackConfiguration);

            ThreatController = new ThreatController(externalTracksByZone, internalTrack, externalThreats, internalThreats, EventMaster);
            ThreatController.PhaseStarting += (sender, args) => PhaseStarting(this, args);
            SittingDuck = new SittingDuck(ThreatController, this, initialDamage);
            var allThreats = bonusThreats.Concat(internalThreats).Concat(externalThreats);

            foreach (var threat in allThreats)
            {
                threat.Initialize(SittingDuck, ThreatController, EventMaster);
            }
            SittingDuck.SetPlayers(players);
            Players = players;
            foreach (var player in players)
            {
                player.Initialize(SittingDuck);
            }
            PadPlayerActions();
        }
        public override string CreateTrack(string RecordingToken, TrackConfiguration TrackConfiguration)
        {
            ParametersValidation validation = new ParametersValidation();

            validation.Add(ParameterType.String, "RecordingToken", RecordingToken);
            // ToDo: add parameters from configuration passed
            return((string)ExecuteGetCommand(validation, RecordingServiceTest.CreateTrackTest));
        }
Пример #8
0
        protected string CreateTrack(string token, TrackConfiguration configuration, string stepName)
        {
            string result = string.Empty;

            RunStep(() => { result = Client.CreateTrack(token, configuration); },
                    stepName);
            DoRequestDelay();
            return(result);
        }
        public static void SixBasicThreats()
        {
            var players = GetPlayers();

            var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration>
            {
                { ZoneLocation.Blue, TrackConfiguration.Track1 },
                { ZoneLocation.Red, TrackConfiguration.Track2 },
                { ZoneLocation.White, TrackConfiguration.Track3 },
            };
            const TrackConfiguration internalTrack = TrackConfiguration.Track4;

            var destroyer = new Destroyer();

            destroyer.SetInitialPlacement(4, ZoneLocation.Blue);
            var fighter1 = new Fighter();

            fighter1.SetInitialPlacement(5, ZoneLocation.Red);
            var fighter2 = new Fighter();

            fighter2.SetInitialPlacement(6, ZoneLocation.White);
            var externalThreats = new ExternalThreat[] { destroyer, fighter1, fighter2 };

            var skirmishers = new SkirmishersA();

            skirmishers.SetInitialPlacement(4);
            var fissure = new Fissure();

            fissure.SetInitialPlacement(2);
            var nuclearDevice = new NuclearDevice();

            nuclearDevice.SetInitialPlacement(6);
            var internalThreats = new InternalThreat[] { skirmishers, fissure, nuclearDevice };

            var bonusThreats = new Threat[0];

            var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null);

            game.StartGame();
            for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++)
            {
                game.PerformTurn();
            }

            Assert.AreEqual(GameStatus.Won, game.GameStatus);
            Assert.AreEqual(4, game.SittingDuck.BlueZone.TotalDamage);
            Assert.AreEqual(3, game.SittingDuck.RedZone.TotalDamage);
            Assert.AreEqual(3, game.SittingDuck.WhiteZone.TotalDamage);
            Assert.AreEqual(3, game.ThreatController.DefeatedThreats.Count());
            Assert.AreEqual(3, game.ThreatController.SurvivedThreats.Count());
            Assert.AreEqual(30, game.TotalPoints);
            Assert.AreEqual(3, game.SittingDuck.Zones.ElementAt(0).CurrentDamageTokens.Count);
            Assert.AreEqual(3, game.SittingDuck.Zones.ElementAt(1).CurrentDamageTokens.Count);
            Assert.AreEqual(4, game.SittingDuck.Zones.ElementAt(2).CurrentDamageTokens.Count);
        }
Пример #10
0
        private static void SlimeBHelper(bool isDefeated, bool isSurvived, TrackConfiguration internalTrack, int timeAppears,
                                         List <Player> players, int blueDamage, int redDamage, int whiteDamage, bool battleBotsDisabled)
        {
            var totalPoints = 0;

            if (isDefeated)
            {
                totalPoints = 6;
            }
            if (isSurvived)
            {
                totalPoints = 3;
            }
            var otherTracks          = EnumFactory.All <TrackConfiguration>().Except(new[] { internalTrack }).ToList();
            var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration>
            {
                { ZoneLocation.Blue, otherTracks.First() },
                { ZoneLocation.Red, otherTracks.Skip(1).First() },
                { ZoneLocation.White, otherTracks.Skip(2).First() }
            };
            var externalThreats = new ExternalThreat[0];

            var slimeB = new SlimeB();

            slimeB.SetInitialPlacement(timeAppears);
            var internalThreats = new InternalThreat[] { slimeB };

            var bonusThreats = new Threat[0];

            var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null);

            game.StartGame();
            for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++)
            {
                game.PerformTurn();
            }
            Assert.AreEqual(GameStatus.Won, game.GameStatus);
            Assert.AreEqual(blueDamage, game.SittingDuck.BlueZone.TotalDamage);
            Assert.AreEqual(redDamage, game.SittingDuck.RedZone.TotalDamage);
            Assert.AreEqual(whiteDamage, game.SittingDuck.WhiteZone.TotalDamage);
            Assert.AreEqual(0, players.Count(player => player.IsKnockedOut));
            Assert.AreEqual(blueDamage, game.SittingDuck.BlueZone.CurrentDamageTokens.Count);
            Assert.AreEqual(redDamage, game.SittingDuck.RedZone.CurrentDamageTokens.Count);
            Assert.AreEqual(whiteDamage, game.SittingDuck.WhiteZone.CurrentDamageTokens.Count);
            var battleBotsAreDisabledInPlace = game.SittingDuck.RedZone.LowerRedStation.BattleBotsComponent.BattleBots?.IsDisabled ?? false;

            Assert.AreEqual(battleBotsDisabled, battleBotsAreDisabledInPlace);

            Assert.AreEqual(isDefeated, game.ThreatController.DefeatedThreats.Any());
            if (totalPoints != game.TotalPoints)
            {
                var errorMessage = $"Survived + points didn't match. Expected: {totalPoints} points, survived: {isSurvived}. Actual: {game.TotalPoints} points, survived: {game.ThreatController.SurvivedThreats.Any()}.";
                Assert.Fail(errorMessage);
            }
        }
Пример #11
0
        protected TrackConfiguration GetTrackConfiguration(string recordingToken, string trackToken)
        {
            TrackConfiguration trackConfiguration = null;

            RunStep(() => { trackConfiguration = Client.GetTrackConfiguration(recordingToken, trackToken); },
                    string.Format("Get track configuration (recording token = '{0}', track token = '{1}')",
                                  recordingToken, trackToken));
            DoRequestDelay();


            return(trackConfiguration);
        }
Пример #12
0
        private void CompareTrackConfigurations(TrackConfiguration recordingTrackConfig, TrackConfiguration trackConfig)
        {
            StringBuilder logger = new StringBuilder();
            bool          ok     = true;

            if (recordingTrackConfig.Description != trackConfig.Description)
            {
                ok = false;
                logger.Append(string.Format("Description are different", Environment.NewLine));
            }
            if (recordingTrackConfig.TrackType != trackConfig.TrackType)
            {
                ok = false;
                logger.Append(string.Format("Track types are different", Environment.NewLine));
            }
            Assert(ok, logger.ToStringTrimNewLine(), "Verify track configuration");
        }
Пример #13
0
        public static void RedSlimeOneYCrossesXYZ_ProgenyACrossesZ_TwoRedDamageTwoWhiteDamageHasDisabledBattleBots_Survived()
        {
            var players = new List <Player>
            {
                new Player(PlayerActionFactory.CreateSingleActionList(ComputerMaintenanceActions), 0, PlayerColor.Green)
            };
            const TrackConfiguration internalTrack = TrackConfiguration.Track4;
            const int timeAppears = 3;

            const int  blueDamage         = 0;
            const int  whiteDamage        = 2;
            const int  redDamage          = 2;
            const bool isDefeated         = false;
            const bool isSurvived         = true;
            const bool battleBotsDisabled = true;

            SlimeBHelper(isDefeated, isSurvived, internalTrack, timeAppears, players, blueDamage, redDamage, whiteDamage, battleBotsDisabled);
        }
        private void CheckRecordingTrack(GetTracksResponseItem track, TrackConfiguration conf)
        {
            bool          ok     = true;
            StringBuilder logger = new StringBuilder();

            if (track.Configuration.Description != conf.Description)
            {
                ok = false;
                logger.Append(string.Format("Description is invalid{0}", Environment.NewLine));
            }
            if (track.Configuration.TrackType != conf.TrackType)
            {
                ok = false;
                logger.Append(string.Format("Track type is invalid{0}", Environment.NewLine));
            }

            Assert(ok, logger.ToStringTrimNewLine(),
                   "Check that configuration parameters of new track are valid");
        }
Пример #15
0
        public override TrackConfiguration GetTrackConfiguration(string RecordingToken, string TrackToken)
        {
            var recording = Search.SearchStorage.Instance.Recordings.Where(r => r.RecordingToken == RecordingToken).FirstOrDefault();

            if (recording == null)
            {
                ReturnFault(new string[] { "Sender", "InvalidArgVal", "UnknownToken" });
            }
            var track = recording.Track.Where(t => t.TrackToken == TrackToken).FirstOrDefault();

            if (track == null)
            {
                ReturnFault(new string[] { "Sender", "InvalidArgVal", "UnknownToken" });
            }
            TrackConfiguration trackConfig = new TrackConfiguration()
            {
                Description = track.Description,
                TrackType   = (TrackType)((int)track.TrackType)
            };

            return(trackConfig);
        }
        public static void JustAFighterNoActions()
        {
            var players = Enumerable.Range(0, 1).Select(index => new Player(new List <PlayerAction>(), 0, PlayerColor.Blue)).ToList();

            var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration>
            {
                { ZoneLocation.Blue, TrackConfiguration.Track1 },
                { ZoneLocation.Red, TrackConfiguration.Track5 },
                { ZoneLocation.White, TrackConfiguration.Track3 }
            };
            const TrackConfiguration internalTrack = TrackConfiguration.Track4;

            var fighter = new Fighter();

            fighter.SetInitialPlacement(5, ZoneLocation.Red);
            var externalThreats = new ExternalThreat[] { fighter };

            var internalThreats = new InternalThreat[0];
            var bonusThreats    = new Threat[0];
            var game            = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null);

            game.StartGame();
            for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++)
            {
                game.PerformTurn();
            }

            Assert.AreEqual(GameStatus.Won, game.GameStatus);
            Assert.AreEqual(0, game.SittingDuck.BlueZone.TotalDamage);
            Assert.AreEqual(5, game.SittingDuck.RedZone.TotalDamage);
            Assert.AreEqual(0, game.SittingDuck.WhiteZone.TotalDamage);
            Assert.AreEqual(0, game.ThreatController.DefeatedThreats.Count());
            Assert.AreEqual(1, game.ThreatController.SurvivedThreats.Count());
            Assert.AreEqual(2, game.TotalPoints);
            Assert.AreEqual(5, game.SittingDuck.Zones.ElementAt(0).CurrentDamageTokens.Count);
            Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(1).CurrentDamageTokens.Count);
            Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(2).CurrentDamageTokens.Count);
        }
Пример #17
0
 protected string CreateTrack(string token, TrackConfiguration configuration)
 {
     return(CreateTrack(token, configuration, "Create track"));
 }
Пример #18
0
        public void DynamicTrackConfigurationTest()
        {
            string recordingToken = string.Empty;
            string trackTypeStr   = string.Empty;

            string trackToken = string.Empty;

            bool isTrackDeleted     = false;
            bool isTrackCreated     = false;
            bool isRecordingCreated = false;

            TrackConfiguration deletedTrackConf = null;

            RunTest(() =>
            {
                // A.14 - Selection of Recording for track creation
                GetRecordingForTrackCreation(out recordingToken,
                                             out trackTypeStr,
                                             out isRecordingCreated,
                                             out isTrackDeleted, out deletedTrackConf);

                TrackType trackType = (trackTypeStr == "Video" ? TrackType.Video :
                                       (trackTypeStr == "Audio" ? TrackType.Audio :
                                        (trackTypeStr == "Metadata" ? TrackType.Metadata : TrackType.Extended)));

                // prepare track configuration
                var trackConf         = new TrackConfiguration();
                trackConf.Description = "New Track";
                trackConf.TrackType   = trackType;

                // get initial recordings
                GetRecordingsResponseItem[] recordingsInitial = GetRecordings();
                Assert(recordingsInitial != null, "Recording list is empty", "Check that recording list is not empty");

                // create track
                trackToken     = CreateTrack(recordingToken, trackConf);
                isTrackCreated = true;

                // check that created track token is not presented in selected recording (from initial track list)
                GetRecordingsResponseItem recordingInitial = recordingsInitial.FirstOrDefault(rec => rec.RecordingToken == recordingToken);
                GetTracksResponseItem track = null;
                if (recordingInitial.Tracks.Track != null)
                {
                    track = recordingInitial.Tracks.Track.FirstOrDefault(t => t.TrackToken == trackToken);
                }
                Assert(track == null,
                       String.Format("Track (token = {0}) has already presented in recording (token = {1})", trackToken, recordingToken),
                       String.Format("Check that new track (token = {0}) wasn't presented in recording (token = {1})", trackToken, recordingToken));

                // get updated recordings (after CreateTrack)
                GetRecordingsResponseItem[] recordingsUpdated = GetRecordings();
                Assert(recordingsUpdated != null, "Recording list is empty", "Check that recording list is not empty");

                // check that created track token is presented in selected recording (from updated track list)
                GetRecordingsResponseItem recordingUpdated = recordingsUpdated.FirstOrDefault(rec => rec.RecordingToken == recordingToken);
                Assert(recordingUpdated != null, "Recording is not found",
                       string.Format("Check that recording (token = {0}) exists in updated recording list", recordingToken));

                GetTracksResponseItem track2 = null;
                if (recordingUpdated.Tracks.Track != null)
                {
                    track2 = recordingUpdated.Tracks.Track.FirstOrDefault(t => t.TrackToken == trackToken);
                }
                Assert(track2 != null,
                       String.Format("Track (token = {0}) isn't presented in recording (token = {1})", trackToken, recordingToken),
                       String.Format("Check that new track (token = {0}) is presented in recording (token = {1})", trackToken, recordingToken));

                // check track parameters
                CheckRecordingTrack(track2, trackConf);

                // check that all other tracks for initial selected recording
                // have the same parameters as for updated selected recording
                GetTracksResponseItem[] trackInitialOther = null;
                if (recordingInitial.Tracks.Track != null)
                {
                    trackInitialOther = (recordingInitial.Tracks.Track.Where(tr => tr.TrackToken != trackToken)).ToArray <GetTracksResponseItem>();
                }

                GetTracksResponseItem[] trackUpdatedOther = null;
                if (recordingUpdated.Tracks.Track != null)
                {
                    trackUpdatedOther = (recordingUpdated.Tracks.Track.Where(tr => tr.TrackToken != trackToken)).ToArray <GetTracksResponseItem>();
                }

                if (trackInitialOther != null && trackInitialOther.Length == 0)
                {
                    trackInitialOther = null;
                }

                if (trackUpdatedOther != null && trackUpdatedOther.Length == 0)
                {
                    trackUpdatedOther = null;
                }

                CheckTrackListChanged(trackInitialOther, trackUpdatedOther,
                                      string.Format("Check that initial track list of recording (token = {0}) wasn't changed", recordingInitial.RecordingToken));

                // check that all other recordings have the same parameters value
                // as before creating a track
                GetRecordingsResponseItem[] recordingsInitialOther = null;
                if (recordingsInitial != null)
                {
                    recordingsInitialOther = (recordingsInitial.Where(rec => rec.RecordingToken != recordingToken)).ToArray <GetRecordingsResponseItem>();
                }

                GetRecordingsResponseItem[] recordingsUpdatedOther = null;
                if (recordingsUpdated != null)
                {
                    recordingsUpdatedOther = (recordingsUpdated.Where(rec => rec.RecordingToken != recordingToken)).ToArray <GetRecordingsResponseItem>();
                }

                if (recordingsInitialOther != null && recordingsInitialOther.Length == 0)
                {
                    recordingsInitialOther = null;
                }

                if (recordingsUpdatedOther != null && recordingsUpdatedOther.Length == 0)
                {
                    recordingsUpdatedOther = null;
                }

                // check that after CreateTrack
                // all tracks of all  other recordings are the same
                CheckTrackListChanged_AllRecordings(recordingsInitialOther, recordingsUpdatedOther,
                                                    "Check that initial track list of other existing recordings wasn't changed after CreateTrack");

                // delete track
                DeleteTrack(recordingToken, trackToken);
                isTrackCreated = false;

                // get updated recordings (after DeleteTrack)
                GetRecordingsResponseItem[] recordingsUpdated2 = GetRecordings();
                Assert(recordingsUpdated2 != null, "Recording list is empty", "Check that recording list is not empty");

                // check that deleted track token is no longer presented in selected recording (from updated track list after deletion)
                GetRecordingsResponseItem recordingUpdated2 = recordingsUpdated2.FirstOrDefault(rec => rec.RecordingToken == recordingToken);
                Assert(recordingUpdated2 != null, "Recording is not found",
                       string.Format("Check that recording (token = {0}) exists in updated recording list", recordingToken));

                GetTracksResponseItem track3 = null;
                if (recordingUpdated2.Tracks.Track != null)
                {
                    track3 = recordingUpdated2.Tracks.Track.FirstOrDefault(t => t.TrackToken == trackToken);
                }
                Assert(track3 == null,
                       String.Format("Track (token = {0}) is still presented in recording (token = {1})", trackToken, recordingToken),
                       String.Format("Check that deleted track (token = {0}) is no longer presented in recording (token = {1})", trackToken, recordingToken));

                // check that before CreateTrack all other tracks in selected recording
                // have the same parameters as after DeleteTrack
                CheckTrackListChanged(recordingInitial.Tracks.Track, recordingUpdated2.Tracks.Track,
                                      string.Format("Check that initial track list of recording (token = {0}) wasn't changed", recordingInitial.RecordingToken));

                // check that afteer CreateTrack + DeleteTrack
                // all tracks of all recordings are the same
                CheckTrackListChanged_AllRecordings(recordingsInitial, recordingsUpdated2,
                                                    "Check that initial track list of existing recordings wasn't changed");
            }, () =>
            {
                if (isTrackCreated || isRecordingCreated || isTrackDeleted)
                {
                    LogTestEvent(string.Format("Restoring the initial settings...{0}", Environment.NewLine));
                }

                // reverting changes made during test
                if (isTrackCreated && !string.IsNullOrEmpty(trackToken))
                {
                    DeleteTrack(recordingToken, trackToken);
                }

                // reverting changes made during A.14
                if (isRecordingCreated && !string.IsNullOrEmpty(recordingToken))
                {
                    DeleteRecording(recordingToken);
                }

                // reverting changes made during A.14
                if (isTrackDeleted && !string.IsNullOrEmpty(recordingToken) && deletedTrackConf != null)
                {
                    CreateTrack(recordingToken, deletedTrackConf);
                }
            });
        }
Пример #19
0
 public static void Seed(AllTheWayUpDbContext context)
 {
     ArtistConfiguration.Seed(context);
     TrackConfiguration.Seed(context);
 }
        public static void EzraDoubleActionsCampaignMission1()
        {
            var players = new List <Player>
            {
                CreateBluePlayerDoubleActionsCampaignMission1(),
                CreateGreenPlayerDoubleActionsCampaignMission1(),
                CreateYellowPlayerDoubleActionsCampaignMission1(),
                CreateRedPlayerDoubleActionsCampaignMission1()
            };

            var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration>
            {
                { ZoneLocation.Blue, TrackConfiguration.Track6 },
                { ZoneLocation.White, TrackConfiguration.Track2 },
                { ZoneLocation.Red, TrackConfiguration.Track5 },
            };
            const TrackConfiguration internalTrack = TrackConfiguration.Track7;

            var armoredGrappler = new ArmoredGrappler();

            armoredGrappler.SetInitialPlacement(1, ZoneLocation.Blue);
            var meteoroid = new Meteoroid();

            meteoroid.SetInitialPlacement(4, ZoneLocation.Blue);
            var dimensionSpider = new DimensionSpider();

            dimensionSpider.SetInitialPlacement(2, ZoneLocation.White);
            var gunship = new Gunship();

            gunship.SetInitialPlacement(6, ZoneLocation.White);
            var asteroid = new Asteroid();

            asteroid.SetInitialPlacement(5, ZoneLocation.Red);
            var destroyer = new Destroyer();

            destroyer.SetInitialPlacement(8, ZoneLocation.Red);
            var externalThreats = new ExternalThreat[] { armoredGrappler, meteoroid, dimensionSpider, gunship, asteroid, destroyer };

            var shambler = new Shambler();

            shambler.SetInitialPlacement(4);
            var internalThreats = new InternalThreat[] { shambler };

            var bonusThreats = new Threat[0];

            var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null);

            game.StartGame();
            try
            {
                for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++)
                {
                    game.PerformTurn();
                }
            }
            catch (LoseException loseException)
            {
                Assert.AreEqual(destroyer, loseException.Threat);
                Assert.AreEqual(GameStatus.Lost, game.GameStatus);
                Assert.AreEqual(0, game.SittingDuck.BlueZone.TotalDamage);
                Assert.AreEqual(9, game.SittingDuck.RedZone.TotalDamage);
                Assert.AreEqual(0, game.SittingDuck.WhiteZone.TotalDamage);
                Assert.AreEqual(6, game.ThreatController.DefeatedThreats.Count());
                Assert.AreEqual(0, game.ThreatController.SurvivedThreats.Count());
                Assert.AreEqual(0, players.Count(player => player.IsKnockedOut));
                Assert.AreEqual(0, game.SittingDuck.BlueZone.CurrentDamageTokens.Count);
                Assert.AreEqual(6, game.SittingDuck.RedZone.CurrentDamageTokens.Count);
                Assert.AreEqual(0, game.SittingDuck.WhiteZone.CurrentDamageTokens.Count);
            }
        }
Пример #21
0
 public override void SetTrackConfiguration(string RecordingToken, string TrackToken, TrackConfiguration TrackConfiguration)
 {
     throw new NotImplementedException();
 }
Пример #22
0
 protected Track(TrackConfiguration trackConfiguration)
 {
     ThreatPositions = new Dictionary <T, int>();
     breakpoints     = trackConfiguration.TrackBreakpoints().ToDictionary(breakpoint => breakpoint.Position);
     sections        = trackConfiguration.TrackSections();
 }
Пример #23
0
 public override string CreateTrack(string RecordingToken, TrackConfiguration TrackConfiguration)
 {
     throw new NotImplementedException();
 }
Пример #24
0
 public ExternalTrack(TrackConfiguration trackConfiguration, Zone zone) : base(trackConfiguration)
 {
     Zone = zone;
 }
        public static void EzraDoubleActionsCampaignMission2()
        {
            var players = new List <Player>
            {
                CreateBluePlayerDoubleActionsCampaignMission2(),
                CreateGreenPlayerDoubleActionsCampaignMission2(),
                CreateYellowPlayerDoubleActionsCampaignMission2(),
                CreateRedPlayerDoubleActionsCampaignMission2()
            };

            var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration>
            {
                { ZoneLocation.Blue, TrackConfiguration.Track7 },
                { ZoneLocation.White, TrackConfiguration.Track2 },
                { ZoneLocation.Red, TrackConfiguration.Track5 }
            };
            const TrackConfiguration internalTrack = TrackConfiguration.Track4;

            var interstellarOctopus = new InterstellarOctopus();

            interstellarOctopus.SetInitialPlacement(3, ZoneLocation.Blue);
            var meteoroid = new Meteoroid();

            meteoroid.SetInitialPlacement(8, ZoneLocation.Blue);
            var amoeba = new Amoeba();

            amoeba.SetInitialPlacement(2, ZoneLocation.White);
            var stealthFighter = new StealthFighter();

            stealthFighter.SetInitialPlacement(4, ZoneLocation.White);
            var spinningSaucer = new SpinningSaucer();

            spinningSaucer.SetInitialPlacement(7, ZoneLocation.White);
            var armoredGrappler = new ArmoredGrappler();

            armoredGrappler.SetInitialPlacement(1, ZoneLocation.Red);
            var externalThreats = new ExternalThreat[] { interstellarOctopus, meteoroid, amoeba, stealthFighter, spinningSaucer, armoredGrappler };

            var commandosB = new CommandosB();

            commandosB.SetInitialPlacement(5);
            var hackedShieldsB = new HackedShieldsB();

            hackedShieldsB.SetInitialPlacement(8);
            var internalThreats = new InternalThreat[] { commandosB, hackedShieldsB };

            var bonusThreats = new Threat[0];

            var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null);

            game.StartGame();
            for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++)
            {
                game.PerformTurn();
            }
            Assert.AreEqual(GameStatus.Won, game.GameStatus);
            Assert.AreEqual(2, game.SittingDuck.BlueZone.TotalDamage);
            Assert.AreEqual(0, game.SittingDuck.RedZone.TotalDamage);
            Assert.AreEqual(5, game.SittingDuck.WhiteZone.TotalDamage);
            Assert.AreEqual(6, game.ThreatController.DefeatedThreats.Count());
            Assert.AreEqual(2, game.ThreatController.SurvivedThreats.Count());
            Assert.AreEqual(0, players.Count(player => player.IsKnockedOut));
            Assert.AreEqual(2, game.SittingDuck.BlueZone.CurrentDamageTokens.Count);
            Assert.AreEqual(0, game.SittingDuck.RedZone.CurrentDamageTokens.Count);
            Assert.AreEqual(5, game.SittingDuck.WhiteZone.CurrentDamageTokens.Count);
        }
Пример #26
0
 internal Track(TrackConfiguration trackConfiguration)
 {
     Breakpoints        = trackConfiguration.TrackBreakpoints();
     Sections           = trackConfiguration.TrackSections();
     TrackConfiguration = trackConfiguration;
 }
        public static IDictionary <int, TrackBreakpointType> TrackBreakpoints(this TrackConfiguration trackConfiguration)
        {
            switch (trackConfiguration)
            {
            case TrackConfiguration.Track1:
                return(new Dictionary <int, TrackBreakpointType>
                {
                    { 5, TrackBreakpointType.X },
                    { 1, TrackBreakpointType.Z }
                });

            case TrackConfiguration.Track2:
                return(new Dictionary <int, TrackBreakpointType>
                {
                    { 8, TrackBreakpointType.X },
                    { 1, TrackBreakpointType.Z }
                });

            case TrackConfiguration.Track3:
                return(new Dictionary <int, TrackBreakpointType>
                {
                    { 8, TrackBreakpointType.X },
                    { 3, TrackBreakpointType.Y },
                    { 1, TrackBreakpointType.Z }
                });

            case TrackConfiguration.Track4:
                return(new Dictionary <int, TrackBreakpointType>
                {
                    { 9, TrackBreakpointType.X },
                    { 5, TrackBreakpointType.Y },
                    { 1, TrackBreakpointType.Z }
                });

            case TrackConfiguration.Track5:
                return(new Dictionary <int, TrackBreakpointType>
                {
                    { 11, TrackBreakpointType.X },
                    { 7, TrackBreakpointType.Y },
                    { 1, TrackBreakpointType.Z }
                });

            case TrackConfiguration.Track6:
                return(new Dictionary <int, TrackBreakpointType>
                {
                    { 10, TrackBreakpointType.X },
                    { 7, TrackBreakpointType.Y },
                    { 3, TrackBreakpointType.Y },
                    { 1, TrackBreakpointType.Z }
                });

            case TrackConfiguration.Track7:
                return(new Dictionary <int, TrackBreakpointType>
                {
                    { 12, TrackBreakpointType.X },
                    { 8, TrackBreakpointType.Y },
                    { 5, TrackBreakpointType.Y },
                    { 1, TrackBreakpointType.Z }
                });

            default:
                throw new InvalidOperationException();
            }
        }
Пример #28
0
 public InternalTrack(TrackConfiguration trackConfiguration) : base(trackConfiguration)
 {
 }
Пример #29
0
        public static List <Component> TrackMaker(SubAssemblyBase subassembly, int PanelCount, int positions, TrackConfiguration configuration)
        {
            List <Component> result = new List <Component>();

            switch (configuration)
            {
            case TrackConfiguration.Telescoping:

                #region Track Blades

                for (int i = 0; i < PanelCount; i++)
                {
                    Component p = new Component(3345, "Blade-" + i.ToString(), subassembly, 1, subassembly.SubAssemblyWidth + 3.0m);
                    result.Add(p);
                }


                #endregion



                break;

            case TrackConfiguration.BiComponenting:
                break;

            default:
                break;
            }


            return(result);
        }
        public static IList <TrackSection> TrackSections(this TrackConfiguration trackConfiguration)
        {
            switch (trackConfiguration)
            {
            case TrackConfiguration.Track1:
                return(new[]
                {
                    new TrackSection {
                        DistanceFromShip = 2, Length = 5
                    },
                    new TrackSection {
                        DistanceFromShip = 1, Length = 5
                    }
                });

            case TrackConfiguration.Track2:
                return(new[]
                {
                    new TrackSection {
                        DistanceFromShip = 3, Length = 1
                    },
                    new TrackSection {
                        DistanceFromShip = 2, Length = 5
                    },
                    new TrackSection {
                        DistanceFromShip = 1, Length = 5
                    }
                });

            case TrackConfiguration.Track3:
                return(new[]
                {
                    new TrackSection {
                        DistanceFromShip = 3, Length = 2
                    },
                    new TrackSection {
                        DistanceFromShip = 2, Length = 5
                    },
                    new TrackSection {
                        DistanceFromShip = 1, Length = 5
                    }
                });

            case TrackConfiguration.Track4:
                return(new[]
                {
                    new TrackSection {
                        DistanceFromShip = 3, Length = 3
                    },
                    new TrackSection {
                        DistanceFromShip = 2, Length = 5
                    },
                    new TrackSection {
                        DistanceFromShip = 1, Length = 5
                    }
                });

            case TrackConfiguration.Track5:
                return(new[]
                {
                    new TrackSection {
                        DistanceFromShip = 3, Length = 4
                    },
                    new TrackSection {
                        DistanceFromShip = 2, Length = 5
                    },
                    new TrackSection {
                        DistanceFromShip = 1, Length = 5
                    }
                });

            case TrackConfiguration.Track6:
                return(new[]
                {
                    new TrackSection {
                        DistanceFromShip = 3, Length = 5
                    },
                    new TrackSection {
                        DistanceFromShip = 2, Length = 5
                    },
                    new TrackSection {
                        DistanceFromShip = 1, Length = 5
                    }
                });

            case TrackConfiguration.Track7:
                return(new[]
                {
                    new TrackSection {
                        DistanceFromShip = 3, Length = 6
                    },
                    new TrackSection {
                        DistanceFromShip = 2, Length = 5
                    },
                    new TrackSection {
                        DistanceFromShip = 1, Length = 5
                    }
                });

            default:
                throw new InvalidOperationException();
            }
        }