コード例 #1
0
        public void TestGenerateAssemblyFile_WithMethod_OptionsAreAsSpecified()
        {
            var name   = new AssemblyName(MethodBase.GetCurrentMethod().Name);
            var target = new SerializerGenerator(typeof(GeneratorTestObject), name);

            target.Method = SerializationMethod.Map;
            var filePath = Path.GetFullPath("." + Path.DirectorySeparatorChar + name.Name + ".dll");

            target.GenerateAssemblyFile();
            // Assert is not polluted.
            Assert.That(SerializationContext.Default.ContainsSerializer(typeof(GeneratorTestObject)), Is.False);

            try
            {
                TestOnWorkerAppDomain(
                    filePath,
                    PackerCompatibilityOptions.Classic,
                    new byte[] { ( byte )'A' },
                    new byte[] { MessagePackCode.MinimumFixedMap + 1, MessagePackCode.MinimumFixedRaw + 3, ( byte )'V', ( byte )'a', ( byte )'l',
                                 MessagePackCode.MinimumFixedRaw + 1, ( byte )'A' },
                    TestType.GeneratorTestObject
                    );
            }
            finally
            {
                File.Delete(filePath);
            }
        }
コード例 #2
0
        public void TestGenerateAssemblyFile_WithDirectory_DllIsGeneratedOnSpecifiedDirectory()
        {
            var name      = new AssemblyName(MethodBase.GetCurrentMethod().Name);
            var target    = new SerializerGenerator(typeof(GeneratorTestObject), name);
            var directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

            target.GenerateAssemblyFile(directory);
            // Assert is not polluted.
            Assert.That(SerializationContext.Default.ContainsSerializer(typeof(GeneratorTestObject)), Is.False);

            try
            {
                TestOnWorkerAppDomain(
                    Path.Combine(directory, name.Name + ".dll"),
                    PackerCompatibilityOptions.Classic,
                    new byte[] { ( byte )'A' },
                    new byte[] { MessagePackCode.MinimumFixedArray + 1, MessagePackCode.MinimumFixedRaw + 1, ( byte )'A' },
                    TestType.GeneratorTestObject
                    );
            }
            finally
            {
                Directory.Delete(directory, true);
            }
        }
コード例 #3
0
        public void TestComplexType_ChildGeneratorsAreContainedAutomatically()
        {
            var name      = new AssemblyName(MethodBase.GetCurrentMethod().Name);
            var target    = new SerializerGenerator(typeof(RootGeneratorTestObject), name);
            var directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

            target.GenerateAssemblyFile(directory);
            // Assert is not polluted.
            Assert.That(SerializationContext.Default.ContainsSerializer(typeof(RootGeneratorTestObject)), Is.False);

            try
            {
                TestOnWorkerAppDomain(
                    Path.Combine(directory, "." + Path.DirectorySeparatorChar + name.Name + ".dll"),
                    PackerCompatibilityOptions.Classic,
                    new byte[] { ( byte )'A' },
                    new byte[]
                {
                    MessagePackCode.MinimumFixedArray + 2,
                    MessagePackCode.MinimumFixedArray + 1, MessagePackCode.MinimumFixedRaw + 1, ( byte )'A',
                    MessagePackCode.NilValue
                },
                    TestType.RootGeneratorTestObject
                    );
            }
            finally
            {
                Directory.Delete(directory, true);
            }
        }
コード例 #4
0
		public void TestGenerateAssemblyFile_WithDirectory_DllIsGeneratedOnSpecifiedDirectory()
		{
			var name = new AssemblyName( MethodBase.GetCurrentMethod().Name );
			var target = new SerializerGenerator( typeof( GeneratorTestObject ), name );
			var directory = Path.Combine( Path.GetTempPath(), Guid.NewGuid().ToString() );
			target.GenerateAssemblyFile( directory );
			// Assert is not polluted.
			Assert.That( SerializationContext.Default.ContainsSerializer( typeof( GeneratorTestObject ) ), Is.False );

			try
			{
				TestOnWorkerAppDomain(
					Path.Combine( directory, name.Name + ".dll" ),
					PackerCompatibilityOptions.Classic,
					new byte[] { ( byte )'A' },
					new byte[] { MessagePackCode.MinimumFixedArray + 1, MessagePackCode.MinimumFixedRaw + 1, ( byte )'A' },
					TestType.GeneratorTestObject
				);
			}
			finally
			{
				Directory.Delete( directory, true );
			}
		}
コード例 #5
0
		public void TestGenerateAssemblyFile_WithDefault_DllIsGeneratedOnAppBase()
		{
			var name = new AssemblyName( MethodBase.GetCurrentMethod().Name );
			var target = new SerializerGenerator( typeof( GeneratorTestObject ), name );
			var filePath = Path.GetFullPath( "." + Path.DirectorySeparatorChar + name.Name + ".dll" );
			target.GenerateAssemblyFile();
			// Assert is not polluted.
			Assert.That( SerializationContext.Default.ContainsSerializer( typeof( GeneratorTestObject ) ), Is.False );

			try
			{
				TestOnWorkerAppDomain(
					filePath,
					PackerCompatibilityOptions.Classic,
					new byte[] { ( byte )'A' },
					new byte[] { MessagePackCode.MinimumFixedArray + 1, MessagePackCode.MinimumFixedRaw + 1, ( byte )'A' },
					TestType.GeneratorTestObject
				);
			}
			finally
			{
				File.Delete( filePath );
			}
		}
コード例 #6
0
		public void TestGenerateAssemblyFile_ComplexType_MultipleTypes()
		{
			var name = new AssemblyName( MethodBase.GetCurrentMethod().Name );
			var target = new SerializerGenerator( name );
			target.TargetTypes.Add( typeof( GeneratorTestObject ) );
			target.TargetTypes.Add( typeof( AnotherGeneratorTestObject ) );
			var directory = Path.Combine( Path.GetTempPath(), Guid.NewGuid().ToString() );
			target.GenerateAssemblyFile( directory );
			// Assert is not polluted.
			Assert.That( SerializationContext.Default.ContainsSerializer( typeof( GeneratorTestObject ) ), Is.False );
			Assert.That( SerializationContext.Default.ContainsSerializer( typeof( AnotherGeneratorTestObject ) ), Is.False );

			try
			{
				TestOnWorkerAppDomainForMultiple(
					Path.Combine( directory, "." + Path.DirectorySeparatorChar + name.Name + ".dll" ),
					PackerCompatibilityOptions.Classic,
					new byte[] { ( byte )'A' },
					new byte[]
					{
						MessagePackCode.MinimumFixedArray + 1, MessagePackCode.MinimumFixedRaw + 1, ( byte ) 'A',
					},
					new byte[] { ( byte )'B' },
					new byte[]
					{
						MessagePackCode.MinimumFixedArray + 1, MessagePackCode.MinimumFixedRaw + 1, ( byte ) 'B',
					}
				);
			}
			finally
			{
				Directory.Delete( directory, true );
			}
		}