Ejemplo n.º 1
0
        public IArithmeticLogicUnit Create(Action <IByte> updateAcc, Action <Caez> updateFlags)
        {
            var not         = new Not();
            var and         = new And();
            var nAnd        = new NAnd(not, and);
            var or          = new Or(not, nAnd);
            var xOr         = new XOr(not, nAnd);
            var byteFactory = new ByteFactory(new Base10Converter());

            return(new ArithmeticLogicUnit(
                       new ByteXOr(xOr, byteFactory),
                       new ByteOr(or, byteFactory),
                       new ByteAnd(and, byteFactory),
                       new Inverter(not, byteFactory),
                       new ByteAdder(new BitAdder(xOr, or, and), byteFactory),
                       new ByteEnabler(and, byteFactory),
                       and,
                       new IsZeroGate(or, not),
                       new ByteDecoder(new Decoder(not, and), byteFactory),
                       new ByteRightShifter(byteFactory),
                       new ByteLeftShifter(byteFactory),
                       or,
                       new AluWire(byteFactory),
                       new ByteComparator(new BitComparator(xOr, and, or, not), byteFactory), updateFlags,
                       updateAcc, byteFactory));
        }
Ejemplo n.º 2
0
        public void CloneTest()
        {
            var exp   = new XOr(new Bool(true), new Bool(false));
            var clone = exp.Clone();

            Assert.Equal(exp, clone);
        }
Ejemplo n.º 3
0
 public void TestXOr()
 {
     {
         var res = new XOr(
             BooleanFalse.Instance,
             BooleanFalse.Instance
             );
         Assert.AreEqual(false, res.Value);
     }
     {
         var res = new XOr(
             BooleanTrue.Instance,
             BooleanFalse.Instance
             );
         Assert.AreEqual(true, res.Value);
     }
     {
         var res = new Or(
             BooleanFalse.Instance,
             BooleanTrue.Instance
             );
         Assert.AreEqual(true, res.Value);
     }
     {
         var res = new XOr(
             BooleanTrue.Instance,
             BooleanTrue.Instance
             );
         Assert.AreEqual(false, res.Value);
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Analyzes the specified expression.
        /// </summary>
        /// <param name="exp">The expression.</param>
        /// <returns>The result of analysis.</returns>
        public string Analyze(XOr exp)
        {
            if (exp.Parent is BinaryExpression)
            {
                return(ToString(exp, "({0} xor {1})"));
            }

            return(ToString(exp, "{0} xor {1}"));
        }
 public void Setup()
 {
     _and           = new And();
     _not           = new Not();
     _nAnd          = new NAnd(_not, _and);
     _or            = new Or(_not, _nAnd);
     _xOr           = new XOr(_not, _nAnd);
     _bitComparator = new BitComparator(_xOr, _and, _or, _not);
 }
Ejemplo n.º 6
0
        public void XOr_SuccessfullyCreates_XOrExpression_Test()
        {
            //Arrange
            var True          = _expressions.Bool(true);
            var TrueXOrTrueEx = new XOr <IContext>(True, True);
            //Act
            var sut = _expressions.XOr(True, True);

            //Assert
            Assert.Equal(TrueXOrTrueEx.Interpret(_context), sut.Interpret(_context));
        }
Ejemplo n.º 7
0
 public void Setup()
 {
     _byteFactory   = new ByteFactory(new Base10Converter());
     _and           = new And();
     _not           = new Not();
     _nAnd          = new NAnd(_not, _and);
     _or            = new Or(_not, _nAnd);
     _xOr           = new XOr(_not, _nAnd);
     _bitComparator = new BitComparator(_xOr, _and, _or, _not);
     _byteToBase10  = new ByteToBase10Converter(_byteFactory, new Base10Converter());
     _sut           = new ByteComparator(_bitComparator, _byteFactory);
 }
Ejemplo n.º 8
0
        public void XOr()
        {
            //Arrange
            var trueXOrTrue   = new XOr <IContext>(new ConstantBool <IContext>(true), new ConstantBool <IContext>(true));
            var trueXOrFalse  = new XOr <IContext>(new ConstantBool <IContext>(true), new ConstantBool <IContext>(false));
            var falseXOrTrue  = new XOr <IContext>(new ConstantBool <IContext>(false), new ConstantBool <IContext>(true));
            var falseXOrFalse = new XOr <IContext>(new ConstantBool <IContext>(false), new ConstantBool <IContext>(false));
            //Act
            var sut1 = trueXOrTrue.Interpret(_context);
            var sut2 = trueXOrFalse.Interpret(_context);
            var sut3 = falseXOrTrue.Interpret(_context);
            var sut4 = falseXOrFalse.Interpret(_context);

            //Assert
            Assert.False(sut1);
            Assert.True(sut2);
            Assert.True(sut3);
            Assert.False(sut4);
        }
Ejemplo n.º 9
0
        public override Verb CreateVerb(string[] tokens)
        {
            Color(position, tokens[1].Length, Whitespaces);
            var operation = tokens[2];

            Color(operation.Length, KeyWords);
            Color(tokens[3].Length, Structures);
            var   index = position + length;
            Block block;

            if (GetExpression(source, index, "')'").Assign(out block, out index))
            {
                Verb verb;
                switch (operation)
                {
                case "and":
                    verb = new And();
                    break;

                case "or":
                    verb = new Or();
                    break;

                case "xor":
                    verb = new XOr();
                    break;

                default:
                    return(null);
                }
                result.Verbs = new List <Verb>
                {
                    verb,
                    new Push(block)
                };
                overridePosition = index;
                return(new NullOp());
            }
            return(null);
        }
Ejemplo n.º 10
0
        public void ResultTypeNumVarTest()
        {
            var exp = new XOr(new Number(1), new Variable("x"));

            Assert.Equal(ExpressionResultType.Number, exp.ResultType);
        }
Ejemplo n.º 11
0
        public void ResultTypeBoolVarTest()
        {
            var exp = new XOr(new Bool(true), new Variable("x"));

            Assert.Equal(ExpressionResultType.Boolean, exp.ResultType);
        }
Ejemplo n.º 12
0
        public void ResultTypeNumberNumberTest()
        {
            var exp = new XOr(new Number(2), new Number(4));

            Assert.Equal(ExpressionResultType.Number, exp.ResultType);
        }
Ejemplo n.º 13
0
        public void ResultTypeBoolBoolTest()
        {
            var exp = new XOr(new Bool(true), new Bool(false));

            Assert.Equal(ExpressionResultType.Boolean, exp.ResultType);
        }
Ejemplo n.º 14
0
        public void ExecuteTest2()
        {
            var exp = new XOr(new Number(1), new Number(2.5));

            Assert.Equal(2.0, exp.Execute());
        }
Ejemplo n.º 15
0
        public void ExecuteTest4()
        {
            var exp = new XOr(new Bool(false), new Bool(true));

            Assert.Equal(true, exp.Execute());
        }
Ejemplo n.º 16
0
        public void TestXOrComplexNumberBoolException()
        {
            var exp = new XOr(new ComplexNumber(1, 1), new Bool(false));

            TestBinaryException(exp);
        }
Ejemplo n.º 17
0
        public void TestXOrUndefined()
        {
            var exp = new XOr(Variable.X, new Variable("y"));

            Test(exp, ResultType.Undefined);
        }
Ejemplo n.º 18
0
        public void TestXOrNumber()
        {
            var exp = new XOr(new Number(1), new Number(2));

            Test(exp, ResultType.Number);
        }
Ejemplo n.º 19
0
        public void XOrXOrToStringTest()
        {
            var exp = new XOr(new Bool(true), new XOr(new Bool(true), new Bool(true)));

            Assert.Equal("True xor (True xor True)", exp.ToString(commoonFormatter));
        }
Ejemplo n.º 20
0
        public void TestXOrComplexNumberException()
        {
            var exp = new XOr(new ComplexNumber(1, 1), new Number(1));

            TestBinaryException(exp);
        }
Ejemplo n.º 21
0
        public void TestXOrBoolean()
        {
            var exp = new XOr(new Bool(true), new Bool(false));

            Test(exp, ResultType.Boolean);
        }
Ejemplo n.º 22
0
        public void ReturnsCorrectNewBit(bool expected, bool[] bits)
        {
            var sut = new XOr(new Not(), new NAnd(new Not(), new And()));

            Assert.AreEqual(expected, sut.Apply(bits));
        }
Ejemplo n.º 23
0
        public void ExecuteTest4()
        {
            var exp = new XOr(new Bool(false), new Bool(true));

            Assert.True((bool)exp.Execute());
        }
Ejemplo n.º 24
0
        public void TestXOrException()
        {
            var exp = new XOr(new ComplexNumber(1, 2), new ComplexNumber(2, 3));

            TestException(exp);
        }
Ejemplo n.º 25
0
        public void ResultTypeVerVarTest()
        {
            var exp = new XOr(new Variable("y"), new Variable("x"));

            Assert.Equal(ExpressionResultType.Number | ExpressionResultType.Boolean, exp.ResultType);
        }
Ejemplo n.º 26
0
        public void TestXOrBoolComplexNumberException()
        {
            var exp = new XOr(new Bool(true), new ComplexNumber(1, 1));

            TestBinaryException(exp);
        }
Ejemplo n.º 27
0
 /// <summary>
 /// Analyzes the specified expression.
 /// </summary>
 /// <param name="exp">The expression.</param>
 /// <returns>
 /// The result of analysis.
 /// </returns>
 /// <exception cref="System.NotSupportedException">Always.</exception>
 public virtual TResult Analyze(XOr exp)
 {
     throw new NotSupportedException();
 }
Ejemplo n.º 28
0
        public void ExecuteResultIsNotSupported()
        {
            var exp = new XOr(new ComplexNumber(1), new ComplexNumber(2));

            Assert.Throws <ResultIsNotSupportedException>(() => exp.Execute());
        }