using System.Collections.Generic;
namespace Vellum.UnitTests
{
[Saveable]
public partial struct Vector
{
public double X;
public double Y;
[NoSave]
public double Length;
}
[Saveable]
public readonly partial struct Fixed
{
public readonly int Count;
public string Label { get; }
public Fixed(int count, string label)
{
Count = count;
Label = label;
}
}
///
/// Holds another [Saveable] type, private and keyword-named fields, and a parameterless constructor that sets a
/// field.
///
[Saveable]
public sealed partial class Crate
{
public string Name = "unnamed";
public Vector At;
public Crate Inside;
public int @event;
public int Opened;
private int secret = 3;
public Crate()
{
Opened = -1;
}
public int Secret
{
get
{
return secret;
}
}
public void Hide(int value)
{
secret = value;
}
}
[Saveable]
public sealed partial class WithoutParameterlessConstructor
{
public int Value = 5;
public int Other;
public WithoutParameterlessConstructor(int other)
{
Other = other;
}
}
[Saveable]
public sealed partial class WithImplicitConstructor
{
public int Value = 5;
}
///
/// Loads every field, then adjusts one.
///
[Saveable]
public sealed partial class Shouting
{
public string Label = "";
private Shouting(SaveReader reader)
: this(reader, default(AutoLoadEveryField))
{
Label = Label.ToUpperInvariant();
}
public Shouting()
{
}
}
///
/// Loads nothing that was saved.
///
[Saveable]
public sealed partial class Forgetful
{
public int Count;
private Forgetful(SaveReader reader)
{
Count = 42;
}
public Forgetful()
{
}
}
[Saveable]
public abstract partial class Beast
{
public string Name = "";
}
[Saveable]
public partial class Hound : Beast
{
public bool Barks;
public Beast Prey;
}
[Saveable]
public sealed partial class Puppy : Hound
{
public int Weeks;
}
[Saveable]
public sealed partial class Kitten : Beast
{
public int Lives = 9;
}
///
/// Has no [Saveable] of its own.
///
public sealed partial class Wolfhound : Hound
{
public int Height;
}
[Saveable]
public interface ICreature
{
}
public interface IFlyer : ICreature
{
}
public sealed partial class Dragon : IFlyer
{
public string Name = "";
public int Wingspan;
}
public partial struct Sprite : ICreature
{
public int Glow;
}
[Saveable]
public sealed partial class Menagerie
{
public ICreature Star;
public ICreature Empty;
public List Cages = new List();
}
[Saveable]
public sealed partial class Folder
{
public string Name = "";
public Folder Parent;
public List Children = new List();
}
[Saveable]
public sealed partial class Kennel
{
public Beast Resident;
public List Pack = new List();
}
[Saveable]
public partial class Moody
{
public int Mood;
protected Moody(SaveReader reader)
: this(reader, default(AutoLoadEveryField))
{
Mood += 100;
}
public Moody()
{
}
}
[Saveable]
public sealed partial class Grumpy : Moody
{
public int Grumbles;
}
public partial class Outer
{
[Saveable]
public partial struct Inner
{
public int Value;
}
}
public static partial class StaticOuter
{
[Saveable]
public partial struct Inner
{
public int Value;
}
}
[Saveable]
public sealed partial class Chained
{
public Chained Next;
}
[Saveable]
public partial struct Duo
where A : struct
{
public A First;
public B Second;
}
[Saveable]
public abstract partial class Vessel
{
public CargoType Cargo;
}
[Saveable]
public sealed partial class Barge : Vessel
{
public int Draft;
}
[Saveable]
public sealed partial class Freighter : Vessel>
{
public int Tonnage;
}
[Saveable]
public interface ILabelled
{
}
public partial struct Tag : ILabelled
{
public ItemType Item;
}
[Saveable]
public sealed partial class Fleet
{
public Vessel Plain;
public Vessel> Loaded;
public ILabelled Label;
}
public partial class Crate
{
[Saveable]
public partial struct Label
{
public ContentType Content;
public int Copies;
}
public partial class Shelf
{
[Saveable]
public sealed partial class Slot
{
public ContentType Content;
public ShelfType Shelf;
public SlotType Held;
}
}
}
[Saveable]
public sealed partial class Grid
{
public int Width;
public List Cells = new List();
}
///
/// Holds one of each collection Vellum saves, some of them holding another saved type.
///
[Saveable]
public sealed partial class Cargo
{
public List Route = new List();
public int[] Counts = new int[0];
public Dictionary> Tags = new Dictionary>();
public Dictionary Names = new Dictionary();
public Queue Line = new Queue();
public Stack Pile = new Stack();
public int[,] Grid = new int[0, 0];
public LinkedList Chain = new LinkedList();
public SortedDictionary Tally = new SortedDictionary();
public SortedSet Marks = new SortedSet();
public double[,,,] Cube = new double[0, 0, 0, 0];
}
///
/// A hierarchy with a member that isn't built in at every level.
///
[Saveable]
public abstract partial class Shipment
{
public Crate Top;
public int Weight;
}
[Saveable]
public partial class Pallet : Shipment
{
public List Crates = new List();
}
[Saveable]
public sealed partial class Truck : Pallet
{
public Crate Spare;
public string Plate = "";
}
///
/// Holds a struct that holds an object, so a failure inside the object passes through the struct's key.
///
[Saveable]
public sealed partial class Pairing
{
public Duo Pair;
}
}