mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 20:39:01 +00:00
301 lines
11 KiB
C#
301 lines
11 KiB
C#
using System;
|
|
using System.CodeDom;
|
|
using System.Collections.Generic;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using Cosmos.TestRunner;
|
|
using Sys = Cosmos.System;
|
|
|
|
namespace SimpleStructsAndArraysTest
|
|
{
|
|
public class Kernel: Sys.Kernel
|
|
{
|
|
protected override void BeforeRun()
|
|
{
|
|
Console.WriteLine("Cosmos booted successfully.");
|
|
}
|
|
|
|
//[StructLayout(LayoutKind.Explicit, Size = 10)]
|
|
//private struct MyStruct
|
|
//{
|
|
// public MyStruct(short a, short b, short c, short d, short e)
|
|
// {
|
|
// A = a;
|
|
// B = b;
|
|
// C = c;
|
|
// D = d;
|
|
// E = e;
|
|
// }
|
|
|
|
// [FieldOffset(0)]
|
|
// public short A;
|
|
|
|
// [FieldOffset(2)]
|
|
// public short B;
|
|
|
|
// [FieldOffset(4)]
|
|
// public short C;
|
|
|
|
// [FieldOffset(6)]
|
|
// public short D;
|
|
|
|
// [FieldOffset(8)]
|
|
// public short E;
|
|
//}
|
|
|
|
//private static T GetValue<T>(T[] arr, int index)
|
|
//{
|
|
// return arr[index];
|
|
//}
|
|
|
|
//private static void TestStep1()
|
|
//{
|
|
// //var xItem = xQueue.Dequeue();
|
|
// //Console.Write("Char: ");
|
|
// //Console.WriteLine(xResult.KeyChar);
|
|
// var xItem = new MyStruct
|
|
// {
|
|
// A = 1,
|
|
// B = 2,
|
|
// C = 3,
|
|
// D = 4,
|
|
// E = 5
|
|
// };
|
|
|
|
// var xArray = new MyStruct[1];
|
|
// xArray[0] = xItem;
|
|
// //xArray[0] = new MyStruct(1, 2, 3, 4, 5);
|
|
|
|
// xItem = xArray[0];
|
|
// Assert.IsTrue(xItem.A == 1, "xItem.A == 1");
|
|
// Console.Write("A: ");
|
|
// Console.WriteLine(xItem.A);
|
|
// Assert.IsTrue(xItem.B == 2, "xItem.B == 2");
|
|
// Console.Write("B: ");
|
|
// Console.WriteLine(xItem.B);
|
|
// Assert.IsTrue(xItem.C == 3, "xItem.C == 3");
|
|
// Console.Write("C: ");
|
|
// Console.WriteLine(xItem.C);
|
|
// Assert.IsTrue(xItem.D == 4, "xItem.D == 4");
|
|
// Console.Write("D: ");
|
|
// Console.WriteLine(xItem.D);
|
|
// Assert.IsTrue(xItem.E == 5, "xItem.E == 5");
|
|
// Console.Write("E: ");
|
|
// Console.WriteLine(xItem.E);
|
|
|
|
// //xItem = new MyStruct(6, 7, 8, 9, 10);
|
|
|
|
// Console.WriteLine("Next: ");
|
|
// //xItem = xQueue.Dequeue();
|
|
// //Console.Write("Char: ");
|
|
// //Console.WriteLine(xResult.KeyChar);
|
|
|
|
// //var xArray = new MyStruct[0];
|
|
// //xArray[0] = new MyStruct(1, 2, 3, 4, 5);
|
|
|
|
// var xItem2 = GetValue(xArray, 0);
|
|
// Assert.IsTrue(xItem2.A == 1, "xItem2.A == 1");
|
|
// Console.Write("A: ");
|
|
// Console.WriteLine(xItem2.A);
|
|
// Assert.IsTrue(xItem2.B == 2, "xItem2.B == 2");
|
|
// Console.Write("B: ");
|
|
// Console.WriteLine(xItem2.B);
|
|
// Assert.IsTrue(xItem2.C == 3, "xItem2.C == 3");
|
|
// Console.Write("C: ");
|
|
// Console.WriteLine(xItem2.C);
|
|
// Assert.IsTrue(xItem2.D == 4, "xItem2.D == 4");
|
|
// Console.Write("D: ");
|
|
// Console.WriteLine(xItem2.D);
|
|
// Assert.IsTrue(xItem2.E == 5, "xItem2.E == 5");
|
|
// Console.Write("E: ");
|
|
// Console.WriteLine(xItem2.E);
|
|
//}
|
|
|
|
//private class KVPClass
|
|
//{
|
|
// public int Key;
|
|
// public int Value;
|
|
//}
|
|
|
|
//private struct KVPStruct
|
|
//{
|
|
// public int Key;
|
|
// public int Value;
|
|
//}
|
|
|
|
//private class OurList<T>
|
|
//{
|
|
// private int _size;
|
|
// private int _version;
|
|
// private T[] _items;
|
|
// private object _syncRoot;
|
|
|
|
// public OurList()
|
|
// {
|
|
// this._items = new T[0];
|
|
// }
|
|
// public void Add(T item)
|
|
// {
|
|
|
|
// if (this._size == this._items.Length)
|
|
// {
|
|
// this.EnsureCapacity(this._size + 1);
|
|
// }
|
|
// T[] arg_36_0 = this._items;
|
|
// int size = this._size;
|
|
// this._size = size + 1;
|
|
// arg_36_0[size] = item;
|
|
// this._version++;
|
|
// }
|
|
|
|
// private void EnsureCapacity(int min)
|
|
// {
|
|
// if (this._items.Length < min)
|
|
// {
|
|
// int num = (this._items.Length == 0) ? 4 : (this._items.Length * 2);
|
|
// if (num > 2146435071)
|
|
// {
|
|
// num = 2146435071;
|
|
// }
|
|
// if (num < min)
|
|
// {
|
|
// num = min;
|
|
// }
|
|
// this.Capacity = num;
|
|
// }
|
|
// }
|
|
|
|
// public int Capacity
|
|
// {
|
|
// get
|
|
// {
|
|
// return this._items.Length;
|
|
// }
|
|
// set
|
|
// {
|
|
// if (value < this._size)
|
|
// {
|
|
// throw new Exception("Capacity is smaller than size!");
|
|
// }
|
|
// if (value != this._items.Length)
|
|
// {
|
|
// if (value > 0)
|
|
// {
|
|
// T[] array = new T[value];
|
|
// if (this._size > 0)
|
|
// {
|
|
// Array.Copy(this._items, 0, array, 0, this._size);
|
|
// }
|
|
// this._items = array;
|
|
// return;
|
|
// }
|
|
// this._items = new T[0];
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// public T this[int index]
|
|
// {
|
|
// get
|
|
// {
|
|
// Assert.IsTrue(index == ExpectedIndex, "index == " + ExpectedIndex);
|
|
// if (index >= this._size)
|
|
// {
|
|
// throw new Exception("Out of range!");
|
|
// }
|
|
// return this._items[index];
|
|
// }
|
|
// }
|
|
|
|
// public static int ExpectedIndex;
|
|
|
|
//}
|
|
|
|
//protected static void TestOurList()
|
|
//{
|
|
// Assert.IsTrue(true, "Start of test");
|
|
// var xListClasses = new OurList<KVPClass>();
|
|
// var xListStructs = new OurList<KVPStruct>();
|
|
|
|
// xListClasses.Add(new KVPClass {Key = 1, Value = 2});
|
|
// xListClasses.Add(new KVPClass {Key = 2, Value = 5});
|
|
|
|
// OurList<KVPClass>.ExpectedIndex = 0;
|
|
// var xListItem = xListClasses[0];
|
|
// Assert.AreEqual(1, xListItem.Key, "xListClasses[0].Key == 1");
|
|
// Assert.AreEqual(2, xListItem.Value, "xListClasses[0].Value == 2");
|
|
// OurList<KVPClass>.ExpectedIndex = 1;
|
|
// xListItem = xListClasses[1];
|
|
// Assert.AreEqual(2, xListItem.Key, "xListClasses[1].Key == 2");
|
|
// Assert.AreEqual(5, xListItem.Value, "xListClasses[1].Value == 5");
|
|
|
|
// xListStructs.Add(new KVPStruct {Key = 1, Value = 2});
|
|
// xListStructs.Add(new KVPStruct {Key = 2, Value = 5});
|
|
|
|
// OurList<KVPStruct>.ExpectedIndex = 0;
|
|
// var xStructItem = xListStructs[0];
|
|
// Assert.AreEqual(1, xStructItem.Key, "xListStructs[0].Key == 1");
|
|
// Assert.AreEqual(2, xStructItem.Value, "xListStructs[0].Value == 2");
|
|
// OurList<KVPStruct>.ExpectedIndex = 1;
|
|
// xStructItem = xListStructs[1];
|
|
// Assert.AreEqual(2, xStructItem.Key, "xListStructs[1].Key == 2");
|
|
// Assert.AreEqual(5, xStructItem.Value, "xListStructs[1].Value == 5");
|
|
//}
|
|
|
|
//protected static void TestStandardList()
|
|
//{
|
|
// Assert.IsTrue(true, "Start of test");
|
|
// var xListClasses = new List<KVPClass>();
|
|
// var xListStructs = new List<KVPStruct>();
|
|
|
|
// xListClasses.Add(new KVPClass { Key = 1, Value = 2 });
|
|
// xListClasses.Add(new KVPClass { Key = 2, Value = 5 });
|
|
|
|
// var xListItem = xListClasses[0];
|
|
// Assert.AreEqual(1, xListItem.Key, "xListClasses[0].Key == 1");
|
|
// Assert.AreEqual(2, xListItem.Value, "xListClasses[0].Value == 2");
|
|
// xListItem = xListClasses[1];
|
|
// Assert.AreEqual(2, xListItem.Key, "xListClasses[1].Key == 2");
|
|
// Assert.AreEqual(5, xListItem.Value, "xListClasses[1].Value == 5");
|
|
|
|
// xListStructs.Add(new KVPStruct { Key = 1, Value = 2 });
|
|
// xListStructs.Add(new KVPStruct { Key = 2, Value = 5 });
|
|
|
|
// var xStructItem = xListStructs[0];
|
|
// Assert.AreEqual(1, xStructItem.Key, "xListStructs[0].Key == 1");
|
|
// Assert.AreEqual(2, xStructItem.Value, "xListStructs[0].Value == 2");
|
|
// xStructItem = xListStructs[1];
|
|
// Assert.AreEqual(2, xStructItem.Key, "xListStructs[1].Key == 2");
|
|
// Assert.AreEqual(5, xStructItem.Value, "xListStructs[1].Value == 5");
|
|
//}
|
|
|
|
//protected static void TestMultidimensionalArray()
|
|
//{
|
|
// var xTestMultidimensionalArray = new int[2, 2];
|
|
// xTestMultidimensionalArray[0, 0] = 1;
|
|
// xTestMultidimensionalArray[0, 1] = 2;
|
|
// xTestMultidimensionalArray[1, 0] = 3;
|
|
// xTestMultidimensionalArray[1, 1] = 4;
|
|
// Assert.IsTrue(xTestMultidimensionalArray.Length == 4, "Size of array is 4.");
|
|
// Assert.IsTrue(xTestMultidimensionalArray[0, 0] == 1, "Index [0, 0] == 1");
|
|
// Assert.IsTrue(xTestMultidimensionalArray[0, 1] == 2, "Index [0, 1] == 2");
|
|
// Assert.IsTrue(xTestMultidimensionalArray[1, 0] == 3, "Index [1, 0] == 3");
|
|
// Assert.IsTrue(xTestMultidimensionalArray[1, 1] == 4, "Index [1, 1] == 4");
|
|
//}
|
|
|
|
protected override void Run()
|
|
{
|
|
//TestStep1();
|
|
//TestOurList();
|
|
//Assert.IsTrue(true, "After TestOurList");
|
|
//TestStandardList();
|
|
//Assert.IsTrue(true, "After TestStandardList");
|
|
//TestMultidimensionalArray();
|
|
//Assert.IsTrue(true, "After TestMultidimensionalArray");
|
|
ConstrainedTest.MutateStructTest();
|
|
Assert.IsTrue(true, "After MutateTestStruct");
|
|
|
|
TestController.Completed();
|
|
}
|
|
}
|
|
}
|