134
135
DomPersistence.Write (writer, DefaultNameEncoder, input);
135
136
byte[] bytes = ms.ToArray ();
137
DomReturnType result = DomPersistence.ReadReturnType (CreateReader (bytes), DefaultNameDecoder);
138
IReturnType result = DomPersistence.ReadReturnType (CreateReader (bytes), DefaultNameDecoder);
138
139
Assert.AreEqual ("Test", result.Name);
139
140
Assert.AreEqual ("Namespace", result.Namespace);
140
141
Assert.AreEqual ("Namespace.Test", result.FullName);
280
public void ReadWriteAttributeTest ()
282
DomAttribute attr = new DomAttribute ();
284
CodePropertyReferenceExpression exp1 = new CodePropertyReferenceExpression ();
285
exp1.TargetObject = new CodeTypeReferenceExpression ("SomeType");
286
exp1.PropertyName = "SomeProperty";
288
CodeTypeOfExpression exp2 = new CodeTypeOfExpression ("SomeTypeOf");
290
CodeBinaryOperatorExpression exp3 = new CodeBinaryOperatorExpression ();
291
exp3.Left = new CodePrimitiveExpression ("one");
292
exp3.Right = new CodePrimitiveExpression ("two");
293
exp3.Operator = CodeBinaryOperatorType.Add;
295
CodePrimitiveExpression exp4 = new CodePrimitiveExpression (37);
297
attr.AddPositionalArgument (exp1);
298
attr.AddPositionalArgument (exp2);
299
attr.AddPositionalArgument (exp3);
300
attr.AddPositionalArgument (exp4);
302
MemoryStream ms = new MemoryStream ();
303
BinaryWriter writer = new BinaryWriter (ms);
304
DomPersistence.Write (writer, DefaultNameEncoder, attr);
305
byte[] bytes = ms.ToArray ();
306
DomAttribute result = DomPersistence.ReadAttribute (CreateReader (bytes), DefaultNameDecoder);
308
Assert.AreEqual (4, result.PositionalArguments.Count);
310
Assert.AreEqual (typeof(CodePropertyReferenceExpression), result.PositionalArguments [0].GetType ());
311
CodePropertyReferenceExpression rexp1 = (CodePropertyReferenceExpression) result.PositionalArguments [0];
312
Assert.AreEqual (typeof(CodeTypeReferenceExpression), rexp1.TargetObject.GetType ());
313
Assert.AreEqual ("SomeType", ((CodeTypeReferenceExpression)rexp1.TargetObject).Type.BaseType);
314
Assert.AreEqual ("SomeProperty", rexp1.PropertyName);
316
Assert.AreEqual (typeof(CodeTypeOfExpression), result.PositionalArguments [1].GetType ());
317
Assert.AreEqual ("SomeTypeOf", ((CodeTypeOfExpression)result.PositionalArguments [1]).Type.BaseType);
319
Assert.AreEqual (typeof(CodeBinaryOperatorExpression), result.PositionalArguments [2].GetType ());
320
CodeBinaryOperatorExpression rexp3 = (CodeBinaryOperatorExpression) result.PositionalArguments [2];
321
Assert.AreEqual (typeof(CodePrimitiveExpression), rexp3.Left.GetType ());
322
Assert.AreEqual ("one", ((CodePrimitiveExpression)rexp3.Left).Value);
323
Assert.AreEqual (typeof(CodePrimitiveExpression), rexp3.Right.GetType ());
324
Assert.AreEqual ("two", ((CodePrimitiveExpression)rexp3.Right).Value);
326
Assert.AreEqual (typeof(CodePrimitiveExpression), result.PositionalArguments [3].GetType ());
327
Assert.AreEqual (37, ((CodePrimitiveExpression)result.PositionalArguments [3]).Value);
278
330
static BinaryReader CreateReader (byte[] bytes)
280
332
return new BinaryReader (new MemoryStream (bytes));