Skip to content

Commit c3d355a

Browse files
authored
Add .NET Helper (#4)
1 parent ad2f1a4 commit c3d355a

34 files changed

+5111
-32
lines changed

.github/workflows/pr-checks.yml

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ jobs:
1010
check_package_lock:
1111
name: nanoFramework
1212
uses: nanoframework/nf-tools/.github/workflows/check-package-lock.yml@main
13+
with:
14+
solution: 'nanoFramework.System.Runtime.Serialization.sln'
1315
check_nuget_latest:
1416
name: nanoFramework
1517
uses: nanoframework/nf-tools/.github/workflows/check-packages-updated.yml@main

.github/workflows/update-dependencies.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ name: Update .NET nanoFramework dependencies
77

88
on:
99
schedule:
10-
# At 00:00 UTC every day.
11-
- cron: '00 00 * * *'
10+
# At 00:00 UTC every wednesday.
11+
- cron: '00 00 * * Wed'
1212
repository_dispatch:
1313
types: update-dependencies
1414

.runsettings

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<RunSettings>
3+
<!-- Configurations that affect the Test Framework -->
4+
<RunConfiguration>
5+
<MaxCpuCount>1</MaxCpuCount>
6+
<ResultsDirectory>.\TestResults</ResultsDirectory><!-- Path relative to solution directory -->
7+
<TestSessionTimeout>120000</TestSessionTimeout><!-- Milliseconds -->
8+
<TargetFrameworkVersion>net48</TargetFrameworkVersion>
9+
<TargetPlatform>x64</TargetPlatform>
10+
</RunConfiguration>
11+
<nanoFrameworkAdapter>
12+
<Logging>None</Logging>
13+
<IsRealHardware>False</IsRealHardware>
14+
</nanoFrameworkAdapter>
15+
</RunSettings>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<MSBuildAllProjects Condition="'$(MSBuildVersion)' == '' Or '$(MSBuildVersion)' &lt; '16.0'">$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
5+
<HasSharedItems>true</HasSharedItems>
6+
<SharedGUID>88d19908-57c1-4b09-9993-de00cee88bf4</SharedGUID>
7+
</PropertyGroup>
8+
<PropertyGroup Label="Configuration">
9+
<Import_RootNamespace>Serialization.Shared</Import_RootNamespace>
10+
</PropertyGroup>
11+
<ItemGroup>
12+
<Compile Include="$(MSBuildThisFileDirectory)FieldNoReflectionAttribute.cs" />
13+
<Compile Include="$(MSBuildThisFileDirectory)SerializationHintsAttribute.cs" />
14+
<Compile Include="$(MSBuildThisFileDirectory)SerializationOptions.cs" />
15+
</ItemGroup>
16+
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup Label="Globals">
4+
<ProjectGuid>88d19908-57c1-4b09-9993-de00cee88bf4</ProjectGuid>
5+
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
6+
</PropertyGroup>
7+
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
8+
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props" />
9+
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props" />
10+
<PropertyGroup />
11+
<Import Project="Serialization.Shared.projitems" Label="Shared" />
12+
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets" />
13+
</Project>
+109
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
//
2+
// Copyright (c) .NET Foundation and Contributors
3+
// Portions Copyright (c) Microsoft Corporation. All rights reserved.
4+
// See LICENSE file in the project root for full license information.
5+
//
6+
7+
using System.Collections;
8+
9+
#if NANOFRAMEWORK_1_0
10+
using nanoFramework.TestFramework;
11+
using System;
12+
using BinaryFormatter = System.Runtime.Serialization.Formatters.Binary.BinaryFormatter;
13+
#else
14+
using Microsoft.VisualStudio.TestTools.UnitTesting;
15+
using nanoFramework.Serialization.Helper;
16+
#endif
17+
18+
namespace nanoFramework.System.Runtime.Serialization.Tests
19+
{
20+
[TestClass]
21+
public class DeserializationTests
22+
{
23+
[TestMethod]
24+
public void DeserializePersonClassTest()
25+
{
26+
// serialize person class
27+
var personeOne = UnitTestHelper.CreatePersonOne();
28+
29+
#if NANOFRAMEWORK_1_0
30+
var newPersoneOne = BinaryFormatter.Deserialize(UnitTestHelper.PersonOneSerialized) as Person;
31+
#else
32+
var binaryFormatter = new BinaryFormatter();
33+
var newPersoneOne = binaryFormatter.Deserialize(UnitTestHelper.PersonOneSerialized) as Person;
34+
#endif
35+
36+
Assert.IsNotNull(newPersoneOne);
37+
Assert.AreEqual(newPersoneOne.LastName, personeOne.LastName);
38+
Assert.AreEqual(newPersoneOne.FirstName, personeOne.FirstName);
39+
Assert.AreEqual(newPersoneOne.ID, personeOne.ID);
40+
Assert.AreEqual(newPersoneOne.Address, personeOne.Address);
41+
Assert.AreEqual(newPersoneOne.Birthday, personeOne.Birthday);
42+
Assert.AreEqual(newPersoneOne.Friend.LastName, personeOne.Friend.LastName);
43+
Assert.AreEqual(newPersoneOne.Friend.FirstName, personeOne.Friend.FirstName);
44+
Assert.AreEqual(newPersoneOne.Friend.ID, personeOne.Friend.ID);
45+
Assert.AreEqual(newPersoneOne.Friend.Address, personeOne.Friend.Address);
46+
Assert.AreEqual(newPersoneOne.Friend.Birthday, personeOne.Friend.Birthday);
47+
}
48+
49+
[TestMethod]
50+
public void DeserializeComplexClassTest()
51+
{
52+
// serialize Complex class
53+
var complexeClassOne = UnitTestHelper.CreateComplexClassOne();
54+
55+
#if NANOFRAMEWORK_1_0
56+
var newComplexeClassOne = BinaryFormatter.Deserialize(UnitTestHelper.ComplexClassOneSerialized) as ComplexClass;
57+
#else
58+
var binaryFormatter = new BinaryFormatter();
59+
var newComplexeClassOne = binaryFormatter.Deserialize(UnitTestHelper.ComplexClassOneSerialized) as ComplexClass;
60+
#endif
61+
62+
Assert.IsNotNull(newComplexeClassOne);
63+
Assert.AreEqual(newComplexeClassOne.aInteger, complexeClassOne.aInteger);
64+
Assert.AreEqual(newComplexeClassOne.aShort, complexeClassOne.aShort);
65+
Assert.AreEqual(newComplexeClassOne.aByte, complexeClassOne.aByte);
66+
Assert.AreEqual(newComplexeClassOne.aString, complexeClassOne.aString);
67+
Assert.AreEqual(newComplexeClassOne.aFloat, complexeClassOne.aFloat);
68+
Assert.AreEqual(newComplexeClassOne.aDouble, complexeClassOne.aDouble);
69+
Assert.AreEqual(newComplexeClassOne.aBoolean, complexeClassOne.aBoolean);
70+
Assert.AreEqual(newComplexeClassOne.Timestamp, complexeClassOne.Timestamp);
71+
Assert.AreEqual(newComplexeClassOne.FixedTimestamp, complexeClassOne.FixedTimestamp);
72+
Assert.AreEqual(newComplexeClassOne.nullObject, complexeClassOne.nullObject);
73+
Assert.AreEqual(newComplexeClassOne.nanFloat, complexeClassOne.nanFloat);
74+
Assert.AreEqual(newComplexeClassOne.nanDouble, complexeClassOne.nanDouble);
75+
76+
CollectionAssert.AreEqual(newComplexeClassOne.intArray, complexeClassOne.intArray);
77+
CollectionAssert.AreEqual(newComplexeClassOne.shortArray, complexeClassOne.shortArray);
78+
CollectionAssert.AreEqual(newComplexeClassOne.byteArray, complexeClassOne.byteArray);
79+
CollectionAssert.AreEqual(newComplexeClassOne.stringArray, complexeClassOne.stringArray);
80+
CollectionAssert.AreEqual(newComplexeClassOne.floatArray, complexeClassOne.floatArray);
81+
CollectionAssert.AreEqual(newComplexeClassOne.doubleArray, complexeClassOne.doubleArray);
82+
83+
Assert.AreEqual(newComplexeClassOne.Child.one, complexeClassOne.Child.one);
84+
Assert.AreEqual(newComplexeClassOne.Child.two, complexeClassOne.Child.two);
85+
Assert.AreEqual(newComplexeClassOne.Child.three, complexeClassOne.Child.three);
86+
87+
Assert.AreEqual(newComplexeClassOne.child1.one, complexeClassOne.child1.one);
88+
Assert.AreEqual(newComplexeClassOne.child1.two, complexeClassOne.child1.two);
89+
Assert.AreEqual(newComplexeClassOne.child1.three, complexeClassOne.child1.three);
90+
}
91+
92+
[TestMethod]
93+
public void DeserializeArrayListTest()
94+
{
95+
// serialize array list
96+
var personeOne = UnitTestHelper.CreateArrayListOne();
97+
98+
#if NANOFRAMEWORK_1_0
99+
var newArrayListeOne = BinaryFormatter.Deserialize(UnitTestHelper.ArrayListOneSerialized) as ArrayList;
100+
#else
101+
var binaryFormatter = new BinaryFormatter();
102+
var newArrayListeOne = binaryFormatter.Deserialize(UnitTestHelper.ArrayListOneSerialized) as ArrayList;
103+
#endif
104+
105+
Assert.IsNotNull(newArrayListeOne);
106+
CollectionAssert.AreEqual(newArrayListeOne, personeOne);
107+
}
108+
}
109+
}

Tests/HelperTests/HelperTests.csproj

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net6.0</TargetFramework>
5+
<ImplicitUsings>disable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
7+
<IsPackable>false</IsPackable>
8+
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
9+
<RestoreLockedMode Condition="'$(TF_BUILD)' == 'True' or '$(ContinuousIntegrationBuild)' == 'True'">true</RestoreLockedMode>
10+
</PropertyGroup>
11+
12+
<ItemGroup>
13+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
14+
<PackageReference Include="MSTest.TestAdapter" Version="2.2.8" />
15+
<PackageReference Include="MSTest.TestFramework" Version="2.2.8" />
16+
<PackageReference Include="coverlet.collector" Version="3.1.2" />
17+
</ItemGroup>
18+
19+
<ItemGroup>
20+
<ProjectReference Include="..\..\nanoFramework.Serialization.Helper\nanoFramework.Serialization.Helper.csproj" />
21+
</ItemGroup>
22+
23+
<Import Project="..\UnitTests.Shared\UnitTests.Shared.projitems" Label="Shared" />
24+
25+
<Import Project="..\..\Serialization.Shared\Serialization.Shared.projitems" Label="Shared" />
26+
27+
</Project>
+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
//
2+
// Copyright (c) .NET Foundation and Contributors
3+
// Portions Copyright (c) Microsoft Corporation. All rights reserved.
4+
// See LICENSE file in the project root for full license information.
5+
//
6+
7+
#if NANOFRAMEWORK_1_0
8+
using nanoFramework.TestFramework;
9+
using BinaryFormatter = System.Runtime.Serialization.Formatters.Binary.BinaryFormatter;
10+
#else
11+
using Microsoft.VisualStudio.TestTools.UnitTesting;
12+
using nanoFramework.Serialization.Helper;
13+
#endif
14+
15+
namespace nanoFramework.System.Runtime.Serialization.Tests
16+
{
17+
[TestClass]
18+
public class SerializationTests
19+
{
20+
[TestMethod]
21+
public void SerializePersonClassTest()
22+
{
23+
// serialize person class
24+
var personeOne = UnitTestHelper.CreatePersonOne();
25+
26+
#if NANOFRAMEWORK_1_0
27+
var serializedPerson = BinaryFormatter.Serialize(personeOne);
28+
#else
29+
var binaryFormatter = new BinaryFormatter();
30+
var serializedPerson = binaryFormatter.Serialize(personeOne);
31+
#endif
32+
33+
Assert.IsNotNull(serializedPerson);
34+
Assert.IsTrue(serializedPerson.Length == UnitTestHelper.PersonOneSerialized.Length, "PersonOne serialized data has different length.");
35+
36+
CollectionAssert.AreEqual(UnitTestHelper.PersonOneSerialized, serializedPerson);
37+
}
38+
39+
[TestMethod]
40+
public void SerializeComplexClassTest()
41+
{
42+
// serialize complex class
43+
var complexClassOne = UnitTestHelper.CreateComplexClassOne();
44+
45+
#if NANOFRAMEWORK_1_0
46+
var serializedComplexClass = BinaryFormatter.Serialize(complexClassOne);
47+
#else
48+
var binaryFormatter = new BinaryFormatter();
49+
var serializedComplexClass = binaryFormatter.Serialize(complexClassOne);
50+
#endif
51+
52+
Assert.IsNotNull(serializedComplexClass);
53+
Assert.IsTrue(serializedComplexClass.Length == UnitTestHelper.ComplexClassOneSerialized.Length, "ComplexClass serialized data has different length.");
54+
55+
CollectionAssert.AreEqual(UnitTestHelper.ComplexClassOneSerialized, serializedComplexClass);
56+
}
57+
58+
[TestMethod]
59+
public void SerializeArrayListTest()
60+
{
61+
// serialize array list
62+
var arrayListOne = UnitTestHelper.CreateArrayListOne();
63+
64+
#if NANOFRAMEWORK_1_0
65+
var serializedArrayList = BinaryFormatter.Serialize(arrayListOne);
66+
#else
67+
var binaryFormatter = new BinaryFormatter();
68+
var serializedArrayList = binaryFormatter.Serialize(arrayListOne);
69+
#endif
70+
71+
Assert.IsNotNull(serializedArrayList);
72+
Assert.IsTrue(serializedArrayList.Length == UnitTestHelper.ArrayListOneSerialized.Length, "ArrayListOne serialized data has different length.");
73+
74+
CollectionAssert.AreEqual(UnitTestHelper.ArrayListOneSerialized, serializedArrayList);
75+
}
76+
}
77+
}

0 commit comments

Comments
 (0)