176 lines
5.0 KiB
C#
176 lines
5.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Runtime.Serialization;
|
|
using UnityEngine;
|
|
|
|
public class TestProgress : MonoBehaviour
|
|
{
|
|
[Serializable]
|
|
// Dummy struct
|
|
private struct SerializableStruct
|
|
{
|
|
public int r, g, b;
|
|
public float x, y, z;
|
|
}
|
|
|
|
private struct NonSerializableStruct
|
|
{
|
|
public int r, g, b;
|
|
public float x, y, z;
|
|
}
|
|
|
|
|
|
// Helper method, returns true if `Progress.Get(...)` throws a `KeyNotFoundException`
|
|
private bool AddNonSerializableStruct()
|
|
{
|
|
Progress progress = new Progress();
|
|
NonSerializableStruct nss = new NonSerializableStruct();
|
|
try { progress.AddOrUpdate<NonSerializableStruct>("key", nss); }
|
|
catch (SerializationException) { return true; }
|
|
return false;
|
|
}
|
|
|
|
// Helper method, returns true if `Progress.Get(...)` throws a `KeyNotFoundException`
|
|
private bool AccessInvalidKey()
|
|
{
|
|
Progress progress = new Progress();
|
|
try { progress.Get<int>("non-existing key"); }
|
|
catch (KeyNotFoundException) { return true; }
|
|
return false;
|
|
}
|
|
|
|
// Helper method, returns true if `Progress.Get(...)` throws a `InvalidCastException`
|
|
private bool AccessInvalidType()
|
|
{
|
|
Progress progress = new Progress();
|
|
progress.AddOrUpdate<int>("key", 123456789);
|
|
try { progress.Get<double>("key"); }
|
|
catch (InvalidCastException) { return true; }
|
|
return false;
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
TestNewProgress();
|
|
TestProgressAddInvalidData();
|
|
TestProgressAddDuplicateKey();
|
|
TestProgressAddInt();
|
|
TestProgressAddDouble();
|
|
TestProgressAddString();
|
|
TestProgressAddSerializableStruct();
|
|
TestProgressAddNonSerializableStruct();
|
|
TestProgressGetInvalidKey();
|
|
TestProgressGetInvalidType();
|
|
TestProgressUpdate();
|
|
TestProgressGetInt();
|
|
TestProgressGetDouble();
|
|
TestProgressGetString();
|
|
TestProgressGetStruct();
|
|
}
|
|
|
|
public void TestNewProgress()
|
|
{
|
|
Progress progress = new Progress();
|
|
Debug.Assert(progress != null);
|
|
}
|
|
|
|
public void TestProgressAddInvalidData()
|
|
{
|
|
Progress progress = new Progress();
|
|
Debug.Assert(!progress.AddOrUpdate<GameObject>("key", null));
|
|
}
|
|
|
|
public void TestProgressAddDuplicateKey()
|
|
{
|
|
Progress progress = new Progress();
|
|
progress.AddOrUpdate<int>("key 1", 0);
|
|
Debug.Assert(progress.AddOrUpdate<int>("key 1", 1));
|
|
}
|
|
|
|
public void TestProgressAddInt()
|
|
{
|
|
Progress progress = new Progress();
|
|
Debug.Assert(progress.AddOrUpdate<int>("key", 1));
|
|
}
|
|
|
|
public void TestProgressAddDouble()
|
|
{
|
|
Progress progress = new Progress();
|
|
Debug.Assert(progress.AddOrUpdate<double>("key", 1.0));
|
|
}
|
|
|
|
public void TestProgressAddString()
|
|
{
|
|
Progress progress = new Progress();
|
|
Debug.Assert(progress.AddOrUpdate<string>("key", "Hello World!"));
|
|
}
|
|
|
|
public void TestProgressAddSerializableStruct()
|
|
{
|
|
Progress progress = new Progress();
|
|
Debug.Assert(progress.AddOrUpdate<SerializableStruct>("key", new SerializableStruct()));
|
|
}
|
|
|
|
public void TestProgressAddNonSerializableStruct()
|
|
{
|
|
Debug.Assert(AddNonSerializableStruct());
|
|
}
|
|
|
|
public void TestProgressGetInvalidKey()
|
|
{
|
|
Debug.Assert(AccessInvalidKey());
|
|
}
|
|
|
|
public void TestProgressGetInvalidType()
|
|
{
|
|
Debug.Assert(AccessInvalidType());
|
|
}
|
|
|
|
public void TestProgressUpdate()
|
|
{
|
|
Progress progress = new Progress();
|
|
progress.AddOrUpdate<int>("key", 1);
|
|
Debug.Assert(progress.Get<int>("key") == 1);
|
|
progress.AddOrUpdate<int>("key", 2);
|
|
Debug.Assert(progress.Get<int>("key") == 2);
|
|
}
|
|
|
|
public void TestProgressGetInt()
|
|
{
|
|
Progress progress = new Progress();
|
|
progress.AddOrUpdate<int>("key", 1);
|
|
Debug.Assert(progress.Get<int>("key") == 1);
|
|
}
|
|
|
|
public void TestProgressGetDouble()
|
|
{
|
|
Progress progress = new Progress();
|
|
progress.AddOrUpdate<double>("key", 1.0);
|
|
Debug.Assert(progress.Get<double>("key") == 1.0);
|
|
}
|
|
|
|
public void TestProgressGetString()
|
|
{
|
|
Progress progress = new Progress();
|
|
progress.AddOrUpdate<string>("key", "Hello World!");
|
|
Debug.Assert(progress.Get<string>("key") == "Hello World!");
|
|
}
|
|
|
|
public void TestProgressGetStruct()
|
|
{
|
|
Progress progress = new Progress();
|
|
|
|
int R = 1, G = 10, B = 100;
|
|
float X = 0.1f, Y = 0.01f, Z = 0.001f;
|
|
SerializableStruct data = new SerializableStruct { r = R, g = G, b = B, x = X, y = Y, z = Z };
|
|
progress.AddOrUpdate<SerializableStruct>("key", data);
|
|
SerializableStruct result = progress.Get<SerializableStruct>("key");
|
|
Debug.Assert(result.r == R);
|
|
Debug.Assert(result.g == G);
|
|
Debug.Assert(result.b == B);
|
|
Debug.Assert(result.x == X);
|
|
Debug.Assert(result.y == Y);
|
|
Debug.Assert(result.z == Z);
|
|
}
|
|
}
|