Esempio n. 1
0
        private void Memory_Clicked(object sender, EventArgs e)
        {
            Button memory = (Button)sender;

            switch (memory.Text)
            {
            case ("M+"):
                try
                {
                    MemoryValue = int.Parse(currentExpression.Text);
                    break;
                }
                catch (Exception exception)
                {
                    DisplayAlert("Memory Error", "You can only add single numbers into memory", "OK");
                    break;
                }

            case ("M"):
                currentExpression.Text = MemoryValue.ToString();
                answerString.Append(MemoryValue.ToString());
                break;

            case ("M-"):
                MemoryValue = 0;
                break;
            }
        }
Esempio n. 2
0
        public void Be_represented_on_36bits(
            long value,
            string expectedRepresentation)
        {
            // Given

            // When
            var memValue = new MemoryValue(value);

            // Then
            Assert.Equal(expectedRepresentation, $"{memValue}");
        }
Esempio n. 3
0
        public void Be_construct_through_representation(
            string memoryValueRepresentation,
            long expectedValue)
        {
            // Given
            var expectedMemoryValue = new MemoryValue(expectedValue);

            // When
            var actualMemoryValue = new MemoryValue(memoryValueRepresentation);

            // Then
            Assert.Equal(expectedMemoryValue, actualMemoryValue);
        }
Esempio n. 4
0
        public void Read_set_memory_instruction(string programInstruction, uint memoryPosition, long value)
        {
            // Given
            var expectedMemoryValue = new MemoryValue(value);

            // When
            var actualMemory = InitializationProgramInterpreter.ExecuteInstruction(
                new Memory(new Memory.OverwriteStrategy()),
                programInstruction);
            var actualMemoryValue = actualMemory.ValueAt(memoryPosition);

            // Then
            Assert.Equal(expectedMemoryValue, actualMemoryValue);
        }
Esempio n. 5
0
        public void Get_value()
        {
            // Given
            var memory = new Memory(new Memory.OverwriteStrategy());
            var expectedMemoryValue = new MemoryValue(11);
            var memoryAddress       = new MemoryAddress(8);

            memory.WriteAt(memoryAddress, new MemoryValue(11));

            // When
            var actualMemoryValue = memory.ValueAt(8);

            // Then
            Assert.Equal(expectedMemoryValue, actualMemoryValue);
        }
Esempio n. 6
0
        public void Overwrite_memory_value(
            long value,
            string maskDescription,
            string expectedRepresentation)
        {
            // Given
            var expectedMemoryValue = new MemoryValue(expectedRepresentation);
            var memoryValue         = new MemoryValue(value);
            var mask = new BitMask(maskDescription);

            // When
            var overwrittenMemoryValue = mask.Overwrite(memoryValue);

            // Then
            Assert.Equal(expectedMemoryValue, overwrittenMemoryValue);
        }
Esempio n. 7
0
        public void Be_add_up(
            long firstValue,
            long secondValue,
            long totalValue)
        {
            // Given
            var firstMemoryValue         = new MemoryValue(firstValue);
            var secondMemoryValue        = new MemoryValue(secondValue);
            var expectedTotalMemoryValue = new MemoryValue(totalValue);

            // When
            var actualTotalMemoryValue = firstMemoryValue + secondMemoryValue;

            // Then
            Assert.Equal(expectedTotalMemoryValue, actualTotalMemoryValue);
        }
Esempio n. 8
0
        public MemoryValueEditor(AutoSplitEnv env, MemoryValue source = null) : base(env, source)
        {
            InitializeComponent();

            _env = env;

            cbAddresses.DataSource = _env.Addresses.Where(w => IsSupportedMemoryWatcher(w)).OrderBy(w => w.Name).ToList();
            cbAddresses.SelectionChangeCommitted += (s, e) => ChangeAddress((MemoryWatcher)cbAddresses.SelectedItem);

            if (source != null)
            {
                var addr = _env.Addresses.FirstOrDefault(m => m.Name == source.MemoryWatcherName);
                if (addr != null)
                {
                    cbAddresses.SelectedItem = addr;
                }
                else
                {
                    MessageBox.Show($"The address \"{source.MemoryWatcherName}\" does not exist.\nPlease choose another one.",
                                    "Address not found", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            ChangeAddress((MemoryWatcher)cbAddresses.SelectedItem);

            if (source != null)
            {
                if (cbValue.DropDownStyle == ComboBoxStyle.DropDownList)
                {
                    cbValue.SelectedItem = source.Value;
                }
                else
                {
                    var value = source.Value as IFormattable;
                    cbValue.Text = value.ToString(null, CultureInfo.InvariantCulture);
                }
                cbComparison.SelectedItem = source.Comparison;
                chkOnChange.Checked       = source.OnValueChanged;
                if (source is StringValue)
                {
                    var stringValue = (StringValue)source;
                    chkIgnoreCase.Checked = stringValue.IgnoreCase;
                    chkContains.Checked   = stringValue.IsContained;
                }
            }
        }
Esempio n. 9
0
        public void Write_value_with_bitmask_overwrite_value(
            long value,
            string maskDescription,
            string expectedRepresentation)
        {
            // Given
            var memory = new Memory(new Memory.OverwriteStrategy());

            memory.UpdateBitMask(new BitMask(maskDescription));
            var expectedMemoryValue = new MemoryValue(expectedRepresentation);

            // When
            memory.WriteAt(new MemoryAddress(1), new MemoryValue(value));

            // Then
            Assert.Equal(expectedMemoryValue, memory.ValueAt(1));
        }
Esempio n. 10
0
        public MemoryValue Apply(MemoryValue value)
        {
            var result = new bool[Memory.REGISTER_SIZE];

            for (int n = 0; n < Memory.REGISTER_SIZE; n++)
            {
                if (bitMask[n].HasValue)
                {
                    result[n] = bitMask[n].Value;
                }
                else
                {
                    result[n] = value.Value[n];
                }
            }

            return(new MemoryValue(result));
        }
        public void Determine_the_sum_of_all_values_left_in_memory_after_read_and_decode(
            string initializationProgramDescription,
            long expectedSum)
        {
            // Given
            var programInstructions = initializationProgramDescription.Split("\n");
            var memory = new Memory(new Memory.DecodeStrategy());
            var expectedSumMemoryValue = new MemoryValue(expectedSum);

            // When
            memory = programInstructions.Aggregate(
                memory,
                InitializationProgramInterpreter.ExecuteInstruction);

            var actualSumMemoryValue = memory.Sum;

            // Then
            Assert.Equal(expectedSumMemoryValue, actualSumMemoryValue);
        }
Esempio n. 12
0
        public void Sum_all_values()
        {
            // Given
            var memory               = new Memory(new Memory.OverwriteStrategy());
            var eightMemoryAddress   = new MemoryAddress(8);
            var seventhMemoryAddress = new MemoryAddress(7);
            var mask = new BitMask("XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X");

            memory.UpdateBitMask(mask);

            memory.WriteAt(eightMemoryAddress, new MemoryValue(11));
            memory.WriteAt(seventhMemoryAddress, new MemoryValue(101));
            memory.WriteAt(eightMemoryAddress, new MemoryValue(0));

            var expectedSumMemoryValue = new MemoryValue(165);

            // When
            var actualSumMemoryValue = memory.Sum;

            // Then
            Assert.Equal(expectedSumMemoryValue, actualSumMemoryValue);
        }
Esempio n. 13
0
        private void ProcessOperation(string s)
        {
            try
            {
                float f = 0.0F;
                switch (s)
                {
                case "Divide":

                    if (ClearDisplay)
                    {
                        _prevOp = MathOperations.Divide;
                        break;
                    }
                    CalculateResult();
                    _prevOp      = MathOperations.Divide;
                    PrevValue    = Display;
                    ClearDisplay = true;
                    break;

                case "Multiply":
                    if (ClearDisplay)
                    {
                        _prevOp = MathOperations.Multiply;
                        break;
                    }
                    CalculateResult();
                    _prevOp      = MathOperations.Multiply;
                    PrevValue    = Display;
                    ClearDisplay = true;
                    break;

                case "Subtract":
                    if (ClearDisplay)
                    {
                        _prevOp = MathOperations.Subtract;
                        break;
                    }
                    CalculateResult();
                    _prevOp      = MathOperations.Subtract;
                    PrevValue    = Display;
                    ClearDisplay = true;
                    break;

                case "Add":
                    if (ClearDisplay)
                    {
                        _prevOp = MathOperations.Add;
                        break;
                    }
                    CalculateResult();
                    _prevOp      = MathOperations.Add;
                    PrevValue    = Display;
                    ClearDisplay = true;
                    break;

                case "Equals":
                    if (ClearDisplay)
                    {
                        break;
                    }
                    CalculateResult();
                    ClearDisplay = true;
                    _prevOp      = MathOperations.None;
                    PrevValue    = Display;
                    break;

                case "SquareRoot":
                    _prevOp   = MathOperations.SquareRoot;
                    PrevValue = Display;
                    CalculateResult();
                    PrevValue    = Display;
                    ClearDisplay = true;
                    _prevOp      = MathOperations.None;
                    break;

                case "Percent":
                    if (ClearDisplay)
                    {
                        _prevOp = MathOperations.Percent;
                        break;
                    }
                    CalculateResult();
                    _prevOp      = MathOperations.Percent;
                    PrevValue    = Display;
                    ClearDisplay = true;
                    break;

                case "PlusMinus":
                    _prevOp   = MathOperations.PlusMinus;
                    PrevValue = Display;
                    CalculateResult();
                    PrevValue    = Display;
                    ClearDisplay = true;
                    _prevOp      = MathOperations.None;
                    break;

                case "ClearAll":
                    _prevOp = MathOperations.None;
                    Display = PrevValue = string.Empty;
                    Equation.Clear();
                    UpdateDisplay();
                    break;

                case "ClearEntry":
                    _prevOp = MathOperations.None;
                    Display = PrevValue;
                    UpdateDisplay();
                    break;

                case "MemoryClear":
                    MemoryValue = 0.0F;
                    DisplayMemory();
                    break;

                case "MemorySave":
                    MemoryValue = float.Parse(Display, CultureInfo.InvariantCulture.NumberFormat);
                    DisplayMemory();
                    ClearDisplay = true;
                    break;

                case "MemoryRecall":
                    Display = MemoryValue.ToString();
                    UpdateDisplay();
                    ClearDisplay = false;
                    break;

                case "MemoryAdd":
                    f           = MemoryValue + float.Parse(Display, CultureInfo.InvariantCulture.NumberFormat);
                    MemoryValue = f;
                    DisplayMemory();
                    ClearDisplay = true;
                    break;
                }
            }
            catch (Exception exception)
            {
                Equation.AddResult("Error");
            }
        }
Esempio n. 14
0
 protected internal override void WriteAt(Memory memory, MemoryAddress address, MemoryValue value)
 {
     foreach (var decodedMemoryAddress in MemoryAddressDecoder.Decode(memory.BitMask, address))
     {
         memory.values[decodedMemoryAddress.Position] = value;
     }
 }
Esempio n. 15
0
 protected internal abstract void WriteAt(Memory memory, MemoryAddress address, MemoryValue value);
Esempio n. 16
0
 private static bool CanSkip(
     MemoryAddressSpace currentAddressSpace,
     MemoryValue toSkip) =>
 toSkip switch
 {
Esempio n. 17
0
 public SetValue(long memPosition, long value)
 {
     this.memPosition = MemoryPosition.FromLong(memPosition);
     this.value       = MemoryValue.FromLong(value);
 }
Esempio n. 18
0
 protected internal override void WriteAt(Memory memory, MemoryAddress address, MemoryValue value)
 => memory.values[address.Position] = memory.BitMask.Overwrite(value);