@@ -1360,9 +1360,9 @@ private DynamicObject CreateMock(ExpressionType op)
13601360 return tMock . Object ;
13611361 }
13621362
1363- public class BinaryTestDynObject : DynamicObject {
1363+ public class OperatorTestDynObject : DynamicObject {
13641364 ExpressionType _type ;
1365- public BinaryTestDynObject ( ExpressionType type ) {
1365+ public OperatorTestDynObject ( ExpressionType type ) {
13661366 _type = type ;
13671367 }
13681368
@@ -1372,28 +1372,68 @@ public override bool TryBinaryOperation(BinaryOperationBinder binder, object arg
13721372 return true ;
13731373 }
13741374
1375+ public override bool TryUnaryOperation ( UnaryOperationBinder binder , out object result ) {
1376+ Assert . AreEqual ( _type , binder . Operation ) ;
1377+ result = _type ;
1378+ return true ;
1379+ }
1380+
13751381 }
1376- private void RunMockTests ( ExpressionType type ) {
1377- var mock = new BinaryTestDynObject ( type ) ;
1382+ private void RunBinaryMockTests ( ExpressionType type ) {
1383+ var mock = new OperatorTestDynObject ( type ) ;
13781384 var dummy = new Object ( ) ;
13791385 Dynamic . InvokeBinaryOperator ( mock , type , dummy ) ;
13801386 }
13811387
1388+ private void RunUnaryMockTests ( ExpressionType type ) {
1389+ var mock = new OperatorTestDynObject ( type ) ;
1390+ Dynamic . InvokeUnaryOpartor ( type , mock ) ;
1391+ }
1392+
13821393 [ Test ]
13831394 public void TestInvokeAdd ( )
13841395 {
13851396 Assert . AreEqual ( Dynamic . InvokeBinaryOperator ( 1 , ExpressionType . Add , 2 ) , 3 ) ;
13861397 }
13871398
1388-
1399+ [ Test ]
1400+ public void TestInvokeBasicUnaryOperatorsDynamic ( )
1401+ {
1402+ RunUnaryMockTests ( ExpressionType . Not ) ;
1403+ RunUnaryMockTests ( ExpressionType . Negate ) ;
1404+ RunUnaryMockTests ( ExpressionType . Increment ) ;
1405+ RunUnaryMockTests ( ExpressionType . Decrement ) ;
1406+
1407+
1408+
1409+ }
13891410
13901411 [ Test ]
13911412 public void TestInvokeBasicBinaryOperatorsDynamic ( )
13921413 {
1393- RunMockTests ( ExpressionType . Add ) ;
1394- RunMockTests ( ExpressionType . Subtract ) ;
1395- RunMockTests ( ExpressionType . Divide ) ;
1396- RunMockTests ( ExpressionType . Multiply ) ;
1414+ RunBinaryMockTests ( ExpressionType . Add ) ;
1415+ RunBinaryMockTests ( ExpressionType . Subtract ) ;
1416+ RunBinaryMockTests ( ExpressionType . Divide ) ;
1417+ RunBinaryMockTests ( ExpressionType . Multiply ) ;
1418+ RunBinaryMockTests ( ExpressionType . Modulo ) ;
1419+
1420+ RunBinaryMockTests ( ExpressionType . And ) ;
1421+ RunBinaryMockTests ( ExpressionType . Or ) ;
1422+ RunBinaryMockTests ( ExpressionType . ExclusiveOr ) ;
1423+ RunBinaryMockTests ( ExpressionType . LeftShift ) ;
1424+ RunBinaryMockTests ( ExpressionType . RightShift ) ;
1425+
1426+ RunBinaryMockTests ( ExpressionType . AddAssign ) ;
1427+ RunBinaryMockTests ( ExpressionType . SubtractAssign ) ;
1428+ RunBinaryMockTests ( ExpressionType . DivideAssign ) ;
1429+ RunBinaryMockTests ( ExpressionType . MultiplyAssign ) ;
1430+ RunBinaryMockTests ( ExpressionType . ModuloAssign ) ;
1431+
1432+ RunBinaryMockTests ( ExpressionType . AndAssign ) ;
1433+ RunBinaryMockTests ( ExpressionType . OrAssign ) ;
1434+ RunBinaryMockTests ( ExpressionType . ExclusiveOrAssign ) ;
1435+ RunBinaryMockTests ( ExpressionType . LeftShiftAssign ) ;
1436+ RunBinaryMockTests ( ExpressionType . RightShiftAssign ) ;
13971437 }
13981438
13991439
0 commit comments