Пример #1
0
        public void ToArabic_return_2016_when_MMXVI()
        {
            var target = new NumeralConverter();
            var actual = target.ToArabic("MMXVI");

            Assert.AreEqual(2016, actual);
        }
Пример #2
0
        public void ToArabic_return_3888_when_MMMDCCCLXXXVIII()
        {
            var target = new NumeralConverter();
            var actual = target.ToArabic("MMMDCCCLXXXVIII");

            Assert.AreEqual(3888, actual);
        }
Пример #3
0
        public void ToArabic_return_50_when_L()
        {
            var target = new NumeralConverter();
            var actual = target.ToArabic("L");

            Assert.AreEqual(50, actual);
        }
Пример #4
0
        public void ToArabic_returns_0_when_empty_string()
        {
            var target = new NumeralConverter();
            var actual = target.ToArabic("");

            Assert.AreEqual(0, actual);
        }
Пример #5
0
        public void ToArabic_return_8_when_VIII()
        {
            var target = new NumeralConverter();
            var actual = target.ToArabic("VIII");

            Assert.AreEqual(8, actual);
        }
Пример #6
0
        public void ToArabic_return_9_when_IX()
        {
            var target = new NumeralConverter();
            var actual = target.ToArabic("IX");

            Assert.AreEqual(9, actual);
        }
    // Use this for initialization
    void Start()
    {
        _fragments = FindObjectsOfType <NumeralFragmentController>().ToList();
        char[] result;
        _fragments.Reverse();
        while (true)
        {
            System.Random rand = new System.Random();
            _randInteger = rand.Next(1000, 3999);
            _randNumeral = NumeralConverter.ConvertDecimalToRoman(_randInteger.ToString());
            result       = _randNumeral.ToCharArray();
            if ((result.Length % _fragments.Count) == 0 && result.Length != 0)
            {
                break;
            }
            else if (result.Length == 0)
            {
                return;
            }
        }
        int indexSkipper = 0;

        foreach (NumeralFragmentController controller in _fragments)
        {
            int portionResult = result.Length / _fragments.Count;
            for (int i = 0 + indexSkipper; i < portionResult + indexSkipper; i++)
            {
                controller._numerals.Add(result[i]);
            }
            indexSkipper += portionResult;
        }
    }
Пример #8
0
        public void ConvertToArabic_WhenPassedSubtractiveNumeral_ReturnsCorrectIntegerValue()
        {
            const string numeral  = "IV";
            var          expected = 4;

            var result = NumeralConverter.ToArabic(numeral);

            result.Should().Be(expected);
        }
            public void Numeral_LXVIII_converts_to_number_29()
            {
                var numeral       = "LXVIII";
                var numeralParser = new NumeralConverter();

                var result = numeralParser.Numberizer(numeral);

                Assert.AreEqual(68, result);
            }
Пример #10
0
        public static string Add(string addend1, string addend2)
        {
            var numericAddend1 = NumeralConverter.ToArabic(addend1);
            var numericAddend2 = NumeralConverter.ToArabic(addend2);

            var sum = numericAddend1 + numericAddend2;

            return(ArabicConverter.ToNumeral(sum));
        }
            public void Numeral_XVI_converts_to_number_16()
            {
                var numeral       = "XVI";
                var numeralParser = new NumeralConverter();

                var result = numeralParser.Numberizer(numeral);

                Assert.AreEqual(16, result);
            }
Пример #12
0
        public void ConvertToArabic_CaseIsIgnored()
        {
            const string numeral  = "xxV";
            var          expected = 25;

            var result = NumeralConverter.ToArabic(numeral);

            result.Should().Be(expected);
        }
Пример #13
0
        public void ConvertToArabic_WhenPassedIIReturns2()
        {
            const string numeral  = "II";
            var          expected = 2;

            var result = NumeralConverter.ToArabic(numeral);

            result.Should().Be(expected);
        }
            public void Numeral_XXIX_converts_to_number_29()
            {
                var numeral       = "XXIX";
                var numeralParser = new NumeralConverter();

                var result = numeralParser.Numberizer(numeral);

                Assert.AreEqual(29, result);
            }
            public void Numeral_XLV_converts_to_number_45()
            {
                var numeral       = "XLV";
                var numeralParser = new NumeralConverter();

                var result = numeralParser.Numberizer(numeral);

                Assert.AreEqual(45, result);
            }
Пример #16
0
        public void ConvertToArabic_WhenPassedNumeralWithIllegalCharacterRepetitions_Throws()
        {
            const string numeral1 = "IIII";
            const string numeral2 = "DD";
            const string numeral3 = "VIIII";

            Assert.Throws <ArgumentException>(() => NumeralConverter.ToArabic(numeral1));
            Assert.Throws <ArgumentException>(() => NumeralConverter.ToArabic(numeral2));
            Assert.Throws <ArgumentException>(() => NumeralConverter.ToArabic(numeral3));
        }
    public void ValidateAnswer()
    {
        string answer = _passcodeMenu.transform.Find("TxtPasscode").GetComponent <InputField>().text;

        int  intAnswer = 0;
        bool isValid   = int.TryParse(answer, out intAnswer);

        if (_doorInstance != null)
        {
            if (intAnswer == _doorInstance._randInteger && isValid)
            {
                _doorInstance._isSolved = true;
                _isPaused = false;
                _passcodeMenu.SetActive(false);
                _doorInstance.Open();
                _doorInstance = null;
            }
            else
            {
                _passcodeMenu.SetActive(false);
                GenericPause("Wrong answer");
            }
        }
        else if (_fragmentInstance != null)
        {
            int result = Convert.ToInt32(NumeralConverter.ConvertRomanToDecimal(answer));
            if (result == _fragmentInstance._passcode)
            {
                _passcodeMenu.SetActive(false);
                StringBuilder sb = new StringBuilder();
                foreach (char numeral in _fragmentInstance._numerals)
                {
                    sb.Append(numeral);
                }

                string numeralResult = sb.ToString();
                _txtRomanNumeralData.GetComponent <Text>().text += sb.ToString();
                Destroy(_fragmentInstance.gameObject);
                _fragmentInstance = null;
                GenericPause("You found some Numerals in a memory fragment. Maybe this is a clue to get to the core? \r\n" + numeralResult);
            }
            else
            {
                _passcodeMenu.SetActive(false);
                GenericPause("Wrong answer");
            }
        }
        _passcodeMenu.transform.Find("TxtPasscode").GetComponent <InputField>().text = "";
    }
Пример #18
0
    void MakePasscode()
    {
        List <char>   numerals = _previousFragment.GetComponent <NumeralFragmentController>()._numerals;
        StringBuilder sb       = new StringBuilder();

        foreach (char numeral in numerals)
        {
            sb.Append(numeral);
        }

        string result        = sb.ToString();
        string decimalResult = NumeralConverter.ConvertRomanToDecimal(result);

        _passcode = Convert.ToInt32(decimalResult);
    }
Пример #19
0
        public void Setup()
        {
            var ruleList = new List <Rule>();


            _mappings = new Dictionary <int, string>
            {
                { 1, "i" },
                { 2, "ii" },
                { 3, "iii" },
                { 4, "iv" },
                { 5, "v" },
                { 6, "vi" },
                { 7, "vii" },
                { 8, "viii" },
                { 9, "ix" },
                { 10, "x" },
                { 50, "l" },
            };

            Func <int, bool> IsLessThanorEqualTo10 = i => i <= 10 && i > 0;
            Func <int, bool> isLessThan11          = _mappings.ContainsKey;

            var applicability = new Applicability(isLessThan11);
            Func <int, RuleResult> arabicNumeralToRomanNumeral = i => _mappings.ContainsKey(i) ? new RuleResult(_mappings[i], 0) : new RuleResult("", 0);
            var lessThan11 = new Rule(applicability, arabicNumeralToRomanNumeral);


            var between11and40 = new Applicability(i => i > 10 && i < 40);
            Func <int, RuleResult> printNumber11To40 = i => new RuleResult(arabicNumeralToRomanNumeral(10).GetStringOutput() + arabicNumeralToRomanNumeral(i).GetStringOutput(), i - 10);
            var ElevenToTwentyRule = new Rule(between11and40, printNumber11To40);


            var from40To49 = new Applicability(i => i >= 40 && i <= 49);
            Func <int, RuleResult> print40to50 = i => new RuleResult(arabicNumeralToRomanNumeral(10).GetStringOutput() + arabicNumeralToRomanNumeral(50).GetStringOutput() +
                                                                     arabicNumeralToRomanNumeral(i - 40).GetStringOutput(), 0);

            var FourtytoFourtyNineRule = new Rule(from40To49, print40to50);


            ruleList.Add(FourtytoFourtyNineRule);
            ruleList.Add(ElevenToTwentyRule);
            ruleList.Add(lessThan11);

            var numeralConverter = new NumeralConverter(ruleList);

            _subject = new NumeralPrinter(numeralConverter);
        }
Пример #20
0
        static void Main(string[] args)
        {
            Char[] validChars = new Char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

            System.Console.WriteLine("Please enter a number to convert or press escape to exit");

            StringBuilder input = new StringBuilder();
            Boolean       loop  = true;

            while (loop)
            {
                var key = System.Console.ReadKey(true);
                if (key.Key == ConsoleKey.Escape)
                {
                    loop = false;
                }

                if (key.Key == ConsoleKey.Enter && input.Length > 0)
                {
                    var toConvert = Convert.ToInt32(input.ToString());
                    System.Console.WriteLine("\r\n{0} Converts To {1}", input, NumeralConverter.ConvertToNumerals(toConvert));
                    input.Clear();
                    System.Console.WriteLine("Enter another number or press escape to exit");
                }

                for (int i = 0; i < validChars.Length; i++)
                {
                    if (key.KeyChar == validChars[i])
                    {
                        System.Console.Write(key.KeyChar);
                        input.Append(key.KeyChar);
                        break;
                    }
                }
            }
        }
Пример #21
0
        public void ToArabic_throws_exception_when_InvalidFormat()
        {
            var target = new NumeralConverter();

            target.ToArabic("IIX");
        }
Пример #22
0
 private void LoadRandomNumeral()
 {
     CurrentValue   = _rand.Next(5000);
     CurrentNumeral = NumeralConverter.ConvertToNumerals(CurrentValue);
 }
Пример #23
0
        public void ShouldConvertProperly(string numeral, int expected)
        {
            var result = NumeralConverter.ConvertRomanNumeralToInt(numeral);

            Assert.AreEqual(expected, result);
        }
Пример #24
0
        public void ConvertToArabic_WhenPassedNumeralWithIllegalCharacters_Throws()
        {
            const string badNumeral = "WAT";

            Assert.Throws <ArgumentException>(() => NumeralConverter.ToArabic(badNumeral));
        }
Пример #25
0
        public void ToArabic_throws_exception_when_InvalidCharater()
        {
            var target = new NumeralConverter();

            target.ToArabic("S");
        }
Пример #26
0
 public NumeralPrinter(NumeralConverter numeralConverter)
 {
     _converter = numeralConverter;
 }
Пример #27
0
 public void ShouldRaiseError(string numeral)
 {
     Assert.ThrowsException <ArgumentException>(() => NumeralConverter.ConvertRomanNumeralToInt(numeral));
 }