public void TestDatabaseTypeDeserialization(string dataType, string value) { string json = string.Format(@"{{""dataType"":""{0}"",""value"":""{1}""}}", dataType, value); using (var str = new StringReader(json)) { var container = JSON.Deserialize <ObjectContainer>(str, Options); DatabaseType databaseType = DatabaseTypeHelper.ConvertFromDisplayName(dataType); string stringVal = container.Value; object val = databaseType.ConvertFromString(stringVal); if (val is DateTime) { DateTime val1 = ( DateTime )val; DateTime val2 = DateTime.Parse(value); Assert.AreEqual(val1, val2); } else { Assert.AreEqual(value.ToLowerInvariant( ), val.ToString( ).ToLowerInvariant( )); } } }
public HttpResponseMessage <string> Run(string idOrAlias, [FromBody] List <ParameterValue> values, bool trace = false) { using (Profiler.Measure("WorkflowController.Run")) { MDL.EntityRef eid = GetId(idOrAlias); var workflow = MDL.Entity.Get <MDL.Workflow>(eid); var parameterValues = new Dictionary <string, object>( ); // { { "ResourceId", new EntityRef(resourceId) } }; using (new SecurityBypassContext()) { if (values != null) { foreach (ParameterValue kv in values) { EventLog.Application.WriteTrace("Running workflow {0} with {1}={2} ({3})", eid.Id, kv.Name, kv.Value, kv.TypeName); var argType = MDL.Entity.Get <MDL.ArgumentType>(kv.TypeName, MDL.ArgumentType.InternalDisplayName_Field); switch (argType.Alias) { case "core:objectArgument": throw new ApplicationException("Object arguments not implemented."); case "core:resourceListArgument": var ids = Jil.JSON.Deserialize <IEnumerable <long> >(kv.Value); parameterValues.Add(kv.Name, Factory.EntityRepository.Get <MDL.IEntity>(ids)); break; case "core:resourceArgument": parameterValues.Add(kv.Name, GetId(kv.Value).Entity); break; default: DatabaseType dbType = DatabaseType.ConvertFromDisplayName(argType.InternalDisplayName); parameterValues.Add(kv.Name, dbType.ConvertFromString(kv.Value)); break; } } } } var taskId = WorkflowRunner.Instance.RunWorkflowAsync(new WorkflowStartEvent(workflow) { Arguments = parameterValues, Trace = trace }); return(new HttpResponseMessage <string>(taskId)); } }
//DatabaseType.BinaryType //DatabaseType.StructureLevelsType private static void TestType <T>(DatabaseType type, T value, string sValue, bool testDatabaseTypeHelper = true, bool testTypeOverrides = true, bool testFromString = true, bool testToString = true) where T : IComparable { if (testDatabaseTypeHelper) { if (testFromString) { // Test DatabaseTypeHelper.ConvertFromString object actualValue = DatabaseTypeHelper.ConvertFromString(type, sValue); Assert.IsTrue(value.CompareTo(actualValue) == 0, "DatabaseTypeHelper.ConvertFromString"); } if (testToString) { // Test DatabaseTypeHelper.ConvertToString string actualString = DatabaseTypeHelper.ConvertToString(type, value); Assert.AreEqual(sValue, actualString, "DatabaseTypeHelper.ConvertToString"); } } if (testTypeOverrides) { if (testFromString) { // Test type.ConvertFromString object actualValue2 = type.ConvertFromString(sValue); Assert.IsTrue(value.CompareTo(actualValue2) == 0, "DatabaseTypeHelper.ConvertFromString"); } if (testToString) { // Test type.ConvertToString string actualString2 = type.ConvertToString(value); Assert.AreEqual(sValue, actualString2, "DatabaseTypeHelper.ConvertToString"); } } }