diff UnitTests/CS/Mapping/MetadataProvider/MetadataProviderTest.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UnitTests/CS/Mapping/MetadataProvider/MetadataProviderTest.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,78 @@
+using System;
+
+using NUnit.Framework;
+
+using BLToolkit.Data;
+using BLToolkit.Reflection;
+using BLToolkit.Reflection.Extension;
+using BLToolkit.Reflection.MetadataProvider;
+
+namespace Mapping.MetadataProvider
+{
+	[TestFixture]
+	public class MetadataProviderTest
+	{
+		class CustomMetadataProvider : MetadataProviderBase
+		{
+			public override string GetFieldName(TypeExtension typeExtension, MemberAccessor member, out bool isSet)
+			{
+				string name = string.Empty;
+
+				foreach (char c in member.Name)
+				{
+					if (char.IsUpper(c))
+					{
+						if (name.Length > 0)
+							name += '_';
+						name += c;
+					}
+					else
+					{
+						name += char.ToUpper(c);
+					}
+				}
+
+				isSet = true;
+
+				return name;
+			}
+		}
+
+		public class Person
+		{
+			public string FirstName;
+			public string LastName;
+		}
+
+		static void MapMetadataProvider_OnCreateProvider(MetadataProviderBase parentProvider)
+		{
+			parentProvider.AddProvider(new CustomMetadataProvider());
+		}
+
+		[Test]
+		public void Test()
+		{
+			MetadataProviderBase.OnCreateProvider += MapMetadataProvider_OnCreateProvider;
+
+			string cmd = "SELECT '1' as FIRST_NAME, '2' as LAST_NAME";
+#if ORACLE || FIREBIRD
+			cmd += " FROM dual";
+#endif
+			using (DbManager db = new DbManager())
+			{
+				Person p = (Person)db
+					.SetCommand(cmd)
+					.ExecuteObject(typeof(Person));
+
+				Assert.AreEqual("1", p.FirstName);
+				Assert.AreEqual("2", p.LastName);
+			}
+		}
+
+		[TearDown]
+		public void TearDown()
+		{
+			MetadataProviderBase.OnCreateProvider -= MapMetadataProvider_OnCreateProvider;
+		}
+	}
+}