// ========================================================
namespace Kerosene.Tools.Test
{
using System;
// ====================================================
public class Test_DynamicParser
{
public static DynamicParser Test_1(bool pressEnter = true)
{
ConsoleHelper.Header(pressEnter, "\n\n=== {0} ...", MethodHelper.ThisMethod());
Func<dynamic, int, object> func = (x, i) => (string)(x + i)[x.Alfa + x.Beta];
var parser = DynamicParser.Parse(func, 7);
Console.WriteLine("\n> Parser = {0}", parser);
Console.WriteLine("\n> Result = {0}", parser.Result);
return parser;
}
public static DynamicParser Test_2(bool pressEnter = true)
{
ConsoleHelper.Header(pressEnter, "\n\n=== {0} ...", MethodHelper.ThisMethod());
Func<dynamic, dynamic, int, object> func = (x, y, i) => x.Where(x.Alfa, y.Beta)[y.Gamma] == x.Delta(i).Whatever();
var parser = DynamicParser.Parse(func, 7);
Console.WriteLine("\n> Parser = {0}", parser);
Console.WriteLine("\n> Result = {0}", parser.Result);
return parser;
}
public static void Dispose_Twice(bool pressEnter = true)
{
ConsoleHelper.Header(pressEnter, "\n\n=== {0} ...", MethodHelper.ThisMethod());
var parser = Test_2(pressEnter: false);
parser.Dispose();
parser.Dispose();
Console.WriteLine("\n> Parser = {0}", parser);
}
public static void Serialization(bool binary, bool pressEnter = true)
{
ConsoleHelper.Header(pressEnter, "\n\n=== {0} ({1} Mode) ...", MethodHelper.ThisMethod(), binary ? "Binary" : "Text");
var parser = Test_2(pressEnter: false);
var result = parser.Result;
var path = "c:\\temp\\data.xml";
SerializationHelper.Serialize(path, result, binary);
var temp = (DynamicNode)SerializationHelper.Deserialize(path, binary);
Console.WriteLine("\n> Deserialized = {0}", temp);
}
public static void Execute(bool pressEnter = true)
{
ConsoleHelper.Header(pressEnter, "\n\n=== {0} ...", MethodHelper.ThisMethod());
Test_1(pressEnter);
Test_2(pressEnter);
Dispose_Twice(pressEnter);
Serialization(true, pressEnter); Serialization(false, pressEnter);
}
}
}
// ========================================================