Ejemplo n.º 1
0
 public void StringToState()
 {
     Assert.True(StateTransformer.TransformStringToState("CHOOSE_LEVEL").
                 Equals(GameStateType.ChooseLevel));
     Assert.True(StateTransformer.TransformStringToState("MAIN_MENU").
                 Equals(GameStateType.MainMenu));
     Assert.True(StateTransformer.TransformStringToState("GAME_PAUSED").
                 Equals(GameStateType.GamePaused));
     Assert.True(StateTransformer.TransformStringToState("GAME_RUNNING").
                 Equals(GameStateType.GameRunning));
 }
Ejemplo n.º 2
0
        public async Task ReadStateAsync(string grainType, GrainReference grainReference, IGrainState grainState)
        {
            if (!(grainState is IAggregateState))
            {
                throw new NotAggregateStateException(grainState.GetType());
            }

            var stream = this.GetStreamName(grainType, grainReference);

            var sliceStart = 0;
            StreamEventsSlice currentSlice;

            do
            {
                var sliceCount = sliceStart + ReadPageSize;

                currentSlice = await this.Connection.ReadStreamEventsForwardAsync(stream, sliceStart, sliceCount, true);

                if (currentSlice.Status == SliceReadStatus.StreamNotFound)
                {
                    return;
                }

                if (currentSlice.Status == SliceReadStatus.StreamDeleted)
                {
                    throw new StreamDeletedException();
                }

                sliceStart = currentSlice.NextEventNumber;

                foreach (var @event in currentSlice.Events)
                {
                    dynamic deserialisedEvent = DeserializeEvent(@event.Event);
                    StateTransformer.ApplyEvent(deserialisedEvent, grainState as IAggregateState);
                }
            } while (!currentSlice.IsEndOfStream);
        }
        private void SetChild()
        {
            panelCenter.Controls.Clear();
            UserControl uc = null;
            AbstractDoubleTransformer tr = transformer.Transformer;

            if (tr is StateTransformer)
            {
                StateTransformer str = tr as StateTransformer;
                UserControlComponentCollectionVariablesStep ucs = new UserControlComponentCollectionVariablesStep();
                uc             = ucs;
                ucs.Step       = transformer.Step;
                ucs.Collection = transformer;
                ucs.SetStep   += (double a) => { transformer.Step = a; };
            }
            else
            {
                UserControlComponentCollectionVariablesMeasure ucm = new UserControlComponentCollectionVariablesMeasure();
                uc = ucm;
                ucm.Transformer = transformer;
            }
            uc.Dock = DockStyle.Fill;
            panelCenter.Controls.Add(uc);
        }
Ejemplo n.º 4
0
 public void TestStringToState(StateTransformer.GameStateType type, string input)
 {
     Assert.AreEqual(type, StateTransformer.TransformStringToState(input));
 }
Ejemplo n.º 5
0
 public void TestTransformStateToStringGAME_MAINMENU()
 {
     Assert.AreSame(StateTransformer.TransformStateToString(
                        StateTransformer.GameStateType.MainMenu), "GAME_MAINMENU");
 }
Ejemplo n.º 6
0
 public void TestTransformStringToStateGAME_RUNNING()
 {
     Assert.AreEqual(StateTransformer.TransformStringToState("GAME_RUNNING"),
                     StateTransformer.GameStateType.GameRunning);
 }
Ejemplo n.º 7
0
 public void TestTransformStringToStateGAME_PAUSED()
 {
     Assert.AreEqual(StateTransformer.TransformStringToState("GAME_PAUSED"),
                     StateTransformer.GameStateType.GamePaused);
 }
Ejemplo n.º 8
0
 public void TestTransformStringToStateGAME_MAINMENU()
 {
     Assert.AreEqual(StateTransformer.TransformStringToState("GAME_MAINMENU"),
                     StateTransformer.GameStateType.MainMenu);
 }
 public void TestStateTransformerCorrect(GameStateType x, string y)
 {
     Assert.AreEqual(x, StateTransformer.TransformStringToState(y));
     Assert.AreEqual(StateTransformer.TransformStateToString(x), y);
 }
Ejemplo n.º 10
0
 public void Init()
 {
     testStateTransformer = new StateTransformer();
 }
Ejemplo n.º 11
0
        async static Task Main(string[] args)
        {
            var lines   = File.ReadAllLinesAsync("input.txt");
            var regex   = new Regex("(?'mnemonic'[a-z]{3})\\s(?'operand'[+\\-][0-9]+)", RegexOptions.Compiled);
            var program = (await lines)
                          .Select(l => regex.Match(l))
                          .Select(m =>
            {
                var mn = m.Groups["mnemonic"].Value switch
                {
                    "nop" => InstructionCode.Nop,
                    "acc" => InstructionCode.Acc,
                    "jmp" => InstructionCode.Jmp,
                    _ => throw new Exception("Invalid opcode."),
                };
                var op = int.Parse(m.Groups["operand"].Value);
                return(new Instruction(mn, op));
            })
                          .ToList();

            var runner = new StateTransformer
            {
                Program = program
            };

            var pcsVisited = new HashSet <int>();
            var state      = new State(0, 0);

            while (!pcsVisited.Contains(state.ProgramCounter))
            {
                pcsVisited.Add(state.ProgramCounter);
                Console.WriteLine($"PC={state.ProgramCounter} A={state.Accumulator}");
                state = runner.Next(state);
            }

            foreach (var mutation in program
                     .Select((instr, idx) => (instr, idx))
                     .Where(p =>
                            p.instr.OpCode == InstructionCode.Jmp ||
                            p.instr.OpCode == InstructionCode.Nop)
                     )
            {
                var prog = program.ToList();
                prog[mutation.idx] = prog[mutation.idx] with
                {
                    OpCode = mutation.instr.OpCode switch
                    {
                        InstructionCode.Nop => InstructionCode.Jmp,
                        InstructionCode.Jmp => InstructionCode.Nop,
                        _ => throw new ArgumentOutOfRangeException()
                    }
                };

                var mutRunner = new StateTransformer
                {
                    Program = prog
                };
                var mutPcVisited = new HashSet <int>();
                var mutState     = new State(0, 0);
                while (mutState.ProgramCounter != prog.Count)
                {
                    mutPcVisited.Add(mutState.ProgramCounter);
                    mutState = mutRunner.Next(mutState);
                    if (mutPcVisited.Contains(mutState.ProgramCounter))
                    {
                        break;
                    }
                }

                if (mutState.ProgramCounter == prog.Count)
                {
                    Console.WriteLine("Excecuted Mutation.");
                    Console.WriteLine($"PC={mutState.ProgramCounter} A={mutState.Accumulator}");
                }
            }
        }
Ejemplo n.º 12
0
 public void StateToString2()
 {
     Assert.AreEqual(StateTransformer.TransformStateToString(GameStateType.GamePaused), "GAME_PAUSED");
 }
Ejemplo n.º 13
0
 public void StateToString3()
 {
     Assert.AreEqual(StateTransformer.TransformStateToString(GameStateType.MainMenu), "GAME_MAIN");
 }
Ejemplo n.º 14
0
 public void StateToString1()
 {
     Assert.AreEqual(StateTransformer.TransformStateToString(GameStateType.GameRunning), "GAME_RUNNING");
 }
Ejemplo n.º 15
0
 public void StringToState3()
 {
     Assert.AreEqual(StateTransformer.TransformStringToState("GAME_MAIN"), GameStateType.MainMenu);
 }
 public void TestStateTransformerThrows()
 {
     Assert.Throws <ArgumentException>(() => { StateTransformer.TransformStringToState("NOT_A_REAL_STATE"); });
     // We cannot test if TransformStateToString throws, since there only are three possible cases for the enum,
     // and they are all covered.
 }
Ejemplo n.º 17
0
 public void TestStateToString(string str, StateTransformer.GameStateType type)
 {
     Assert.AreEqual(str, StateTransformer.TransformStateToString(type));
 }
Ejemplo n.º 18
0
 public void TestStringToState2()
 {
     Assert.AreEqual(StateTransformer.TransformStringToState("MAIN_MENU"),
                     GameStateType.MainMenu);
 }
Ejemplo n.º 19
0
 public void TestNull()
 {
     Assert.Throws <ArgumentException>((() => StateTransformer.TransformStringToState("STOP")));
 }
Ejemplo n.º 20
0
 public void TestTransformStateToStringGAME_RUNNING()
 {
     Assert.AreSame(StateTransformer.TransformStateToString(
                        StateTransformer.GameStateType.GameRunning), "GAME_RUNNING");
 }
Ejemplo n.º 21
0
 public void TestTransformStateToStringGAME_PAUSED()
 {
     Assert.AreSame(StateTransformer.TransformStateToString(
                        StateTransformer.GameStateType.GamePaused), "GAME_PAUSED");
 }
Ejemplo n.º 22
0
 public void TestStateToString3()
 {
     Assert.AreEqual(StateTransformer.TransformStateToString(GameStateType.MainMenu),
                     "MAIN_MENU");
 }