Implement serialization of Settings and SettingsRepository.
- FIX: Stile werden jetzt gespeichert.
This commit is contained in:
@ -27,7 +27,7 @@ namespace Tests.Controller
|
||||
[TestFixture]
|
||||
class SettingsRepositoryTest
|
||||
{
|
||||
SettingsRepository _savedSettings;
|
||||
string _savedSettings;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
|
@ -22,6 +22,7 @@ using System.Text;
|
||||
using NUnit.Framework;
|
||||
using zaaReloaded2.Controller;
|
||||
using zaaReloaded2.Controller.Elements;
|
||||
using System.IO;
|
||||
|
||||
namespace Tests.Controller
|
||||
{
|
||||
@ -49,5 +50,21 @@ namespace Tests.Controller
|
||||
((Items)clone.Elements[1]).Content,
|
||||
"Items content");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PersistSettings()
|
||||
{
|
||||
string name = "hello world";
|
||||
Settings persisting = new Settings(name, new List<ElementBase>() { new Items() });
|
||||
persisting.ReferenceStyle = zaaReloaded2.Formatter.ReferenceStyle.IfSpecialItem;
|
||||
MemoryStream s = new MemoryStream();
|
||||
persisting.Persist(s);
|
||||
s.Position = 0;
|
||||
Settings retrieved = Settings.Unpersist(s);
|
||||
|
||||
Assert.AreEqual(persisting.Name, retrieved.Name, "Name");
|
||||
Assert.AreEqual(persisting.ReferenceStyle, retrieved.ReferenceStyle, "ReferenceStyle");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
169
Tests/SerializationTest.cs
Executable file
169
Tests/SerializationTest.cs
Executable file
@ -0,0 +1,169 @@
|
||||
/* SelectFirstDayTest.cs
|
||||
* part of zaaReloaded2
|
||||
*
|
||||
* Copyright 2015 Daniel Kraus
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Xml.Serialization;
|
||||
using zaaReloaded2.Controller.Elements;
|
||||
using NUnit.Framework;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
using System.Runtime.Serialization.Formatters.Soap;
|
||||
using zaaReloaded2.Controller;
|
||||
|
||||
namespace Tests.Controller
|
||||
{
|
||||
[TestFixture]
|
||||
class SerializationTest
|
||||
{
|
||||
[Test]
|
||||
public void SerializeControlElement()
|
||||
{
|
||||
SelectFirstDay element = new SelectFirstDay(
|
||||
new List<FormatElementBase>()
|
||||
{
|
||||
new Items("hello"),
|
||||
new Items("world")
|
||||
}
|
||||
);
|
||||
MemoryStream stream = new MemoryStream();
|
||||
// XmlSerializer does not work with interface properties...
|
||||
// XmlSerializer serializer = new XmlSerializer(typeof(SelectFirstDay));
|
||||
// BinaryFormatter serializer = new BinaryFormatter();
|
||||
SoapFormatter serializer = new SoapFormatter();
|
||||
serializer.Serialize(stream, element);
|
||||
stream.Position = 0;
|
||||
StreamReader sr = new StreamReader(stream);
|
||||
Console.WriteLine(sr.ReadToEnd());
|
||||
stream.Position = 0;
|
||||
SelectFirstDay deserialized = serializer.Deserialize(stream) as SelectFirstDay;
|
||||
Assert.IsNotNull(deserialized);
|
||||
Assert.AreEqual(element.Children.Count, deserialized.Children.Count);
|
||||
Assert.AreEqual(element.Children[0].Content, deserialized.Children[0].Content);
|
||||
Assert.AreEqual(element.Children[1].Content, deserialized.Children[1].Content);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SerializeFormatElement()
|
||||
{
|
||||
string testString = "Hello World";
|
||||
CustomText element = new CustomText();
|
||||
element.Content = testString;
|
||||
MemoryStream stream = new MemoryStream();
|
||||
SoapFormatter serializer = new SoapFormatter();
|
||||
serializer.Serialize(stream, element);
|
||||
stream.Position = 0;
|
||||
CustomText deserialized = serializer.Deserialize(stream) as CustomText;
|
||||
Assert.IsNotNull(deserialized);
|
||||
Assert.AreEqual(element.Content, deserialized.Content);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SerializeSettings()
|
||||
{
|
||||
Settings settings = CreateTestSettings1();
|
||||
MemoryStream stream = new MemoryStream();
|
||||
SoapFormatter serializer = new SoapFormatter();
|
||||
serializer.Serialize(stream, settings);
|
||||
stream.Position = 0;
|
||||
Settings deserialized = serializer.Deserialize(stream) as Settings;
|
||||
Assert.IsNotNull(deserialized);
|
||||
Assert.AreEqual(settings.Name, deserialized.Name);
|
||||
Assert.AreEqual(settings.ReferenceStyle, deserialized.ReferenceStyle);
|
||||
Assert.AreEqual(settings.Elements.Count, deserialized.Elements.Count);
|
||||
Assert.AreEqual(settings.Elements[0].GetType(), deserialized.Elements[0].GetType());
|
||||
Assert.AreEqual(settings.Elements[1].GetType(), deserialized.Elements[1].GetType());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SerializeSettingsRepository()
|
||||
{
|
||||
SettingsRepository repository = new SettingsRepository();
|
||||
repository.SettingsList.Add(CreateTestSettings1());
|
||||
repository.SettingsList.Add(CreateTestSettings2());
|
||||
MemoryStream stream = new MemoryStream();
|
||||
SoapFormatter serializer = new SoapFormatter();
|
||||
serializer.Serialize(stream, repository);
|
||||
stream.Position = 0;
|
||||
SettingsRepository deserialized = serializer.Deserialize(stream) as SettingsRepository;
|
||||
Assert.IsNotNull(deserialized);
|
||||
Assert.AreEqual(repository.SettingsList.Count, deserialized.SettingsList.Count);
|
||||
Assert.AreEqual(
|
||||
repository.SettingsList[1].Elements.Count,
|
||||
deserialized.SettingsList[1].Elements.Count
|
||||
);
|
||||
Assert.AreEqual(
|
||||
repository.SettingsList[0].Name,
|
||||
deserialized.SettingsList[0].Name
|
||||
);
|
||||
Assert.AreEqual(
|
||||
repository.SettingsList[0].ReferenceStyle,
|
||||
deserialized.SettingsList[0].ReferenceStyle
|
||||
);
|
||||
}
|
||||
|
||||
Settings CreateTestSettings1()
|
||||
{
|
||||
string testName = "test name...";
|
||||
string testString = "Hello World";
|
||||
SelectFirstDay controlElement = new SelectFirstDay(
|
||||
new List<FormatElementBase>()
|
||||
{
|
||||
new Items("hello"),
|
||||
new Items("world")
|
||||
}
|
||||
);
|
||||
CustomText formatElement = new CustomText();
|
||||
formatElement.Content = testString;
|
||||
Settings settings = new Settings(testName, new List<ElementBase>()
|
||||
{
|
||||
controlElement,
|
||||
formatElement
|
||||
}
|
||||
);
|
||||
settings.ReferenceStyle = zaaReloaded2.Formatter.ReferenceStyle.IfSpecialItem;
|
||||
return settings;
|
||||
}
|
||||
|
||||
Settings CreateTestSettings2()
|
||||
{
|
||||
string testName = "another test name";
|
||||
SelectFirstDay controlElement1 = new SelectFirstDay(
|
||||
new List<FormatElementBase>()
|
||||
{
|
||||
new CustomText(),
|
||||
}
|
||||
);
|
||||
SelectLastDay controlElement2 = new SelectLastDay(
|
||||
new List<FormatElementBase>()
|
||||
{
|
||||
new Items("Items content"),
|
||||
}
|
||||
);
|
||||
Settings settings = new Settings(testName, new List<ElementBase>()
|
||||
{
|
||||
controlElement1,
|
||||
controlElement2
|
||||
}
|
||||
);
|
||||
settings.ReferenceStyle = zaaReloaded2.Formatter.ReferenceStyle.IfSpecialOrAbnormal;
|
||||
return settings;
|
||||
}
|
||||
}
|
||||
}
|
@ -58,11 +58,13 @@
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization.Formatters.Soap" />
|
||||
<Reference Include="System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Expression.Blend.Sdk.1.0.2\lib\net40-client\System.Windows.Interactivity.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="System.XML" />
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<Choose>
|
||||
@ -78,6 +80,7 @@
|
||||
</Otherwise>
|
||||
</Choose>
|
||||
<ItemGroup>
|
||||
<Compile Include="SerializationTest.cs" />
|
||||
<Compile Include="Controller\SettingsRepositoryTest.cs" />
|
||||
<Compile Include="Controller\SettingsTest.cs" />
|
||||
<Compile Include="Formatter\DocumentWriterTest.cs" />
|
||||
|
Reference in New Issue
Block a user