Skip to content
Snippets Groups Projects
Commit b27d633f authored by kgerg2's avatar kgerg2
Browse files

VisitableBuilding tests and fix bug #85

parent d2f0c66e
No related branches found
No related tags found
1 merge request!39Document people and related classes
Pipeline #16431 passed
......@@ -32,6 +32,8 @@ namespace Model.Landscape
private Queue<Visitor> queue;
private List<Visitor> onRide;
public int InQueueCount { get => inQueueCount; } // for testing purposes
public int OnRideCount { get => onRideCount; } // for testing purposes
public int EntryFee { get => entryFee; }
public bool CanEatHere { get => effectOnSatiety > 0; }
......@@ -121,6 +123,7 @@ namespace Model.Landscape
if (p is Visitor visitor && queue.Contains(visitor)) {
queue = new Queue<Visitor>(queue.Where(v => v != visitor));
inQueueCount.Value = queue.Count;
visitor.InQueue = false;
}
base.Exit(p);
......
fileFormatVersion: 2
guid: 423781da6d5cb1843bfe20be624e7d20
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using NUnit.Framework;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using Model.Cartography;
using Model.Common;
using Model.Landscape;
using Model.Landscape.Blueprints;
using Model.People;
using static Model.Cartography.MapObject;
namespace Tests.Model.Landscape
{
class Test_VisitableBuilding
{
private Simulation.Config config = new Simulation.Config
{
VisitorArrivalChance = 0,
EntranceBlueprint = new PavementBlueprint
{
Size = new Vec2i { X = 1, Y = 1 },
NavigableCells = new List<NavigableCell> {
new NavigableCell {
Position = new Vec2i { X = 0, Y = 0 },
OpenDirections = new List<Orientation> {
Orientation.NORTH,
Orientation.EAST,
Orientation.SOUTH,
Orientation.WEST,
},
},
},
},
EntrancePosition = new Vector2(0, 0),
GridSize = new Vec2i { X = 2, Y = 1 },
};
VisitableBuildingBlueprint blueprint = new VisitableBuildingBlueprint
{
EntryFee = 1,
QueueCapacity = 1,
Capacity = 1,
EffectOnMood = 2,
EffectOnSatiety = 1,
NavigableCells = new List<NavigableCell> {
new NavigableCell {
Position = new Vec2i()
}
}
};
VisitableBuilding building;
Vector2 vec = new Vector2();
Visitor visitor;
[SetUp]
public void Init() {
Simulation.CreateOnce(config);
building = new VisitableBuilding(blueprint, new MapObjectPosition());
building.Tick();
Assert.IsTrue(building.IsOperational);
visitor = new Visitor(vec, Park.Instance.Entrance.Vertices.Single(), 0, "", 1, 1, 1);
}
[TearDown]
public void TearDown() {
Simulation.DestroyInstance();
}
[Test]
public void TestCanEatHere() {
}
[Test]
public void TestEntering() {
Assert.IsTrue(visitor.Visible);
Assert.IsFalse(visitor.InQueue);
Assert.AreEqual(0, building.InQueueCount);
Assert.AreEqual(EnterResult.SUCCESS, building.Enter(visitor, ref vec));
Assert.IsFalse(visitor.Visible);
Assert.IsTrue(visitor.InQueue);
Assert.AreEqual(1, building.InQueueCount);
}
[Test]
public void TestRide() {
Assert.AreEqual(EnterResult.SUCCESS, building.Enter(visitor, ref vec));
Assert.IsTrue(visitor.InQueue);
Assert.AreEqual(1, building.InQueueCount);
Assert.AreEqual(0, building.OnRideCount);
building.Tick();
Assert.IsFalse(visitor.InQueue);
Assert.AreEqual(0, building.InQueueCount);
Assert.AreEqual(1, building.OnRideCount);
}
[Test]
public void TestEffects() {
int mood = visitor.Mood;
int satiety = visitor.Satiety;
int money = visitor.Money;
Assert.AreEqual(EnterResult.SUCCESS, building.Enter(visitor, ref vec));
building.Tick();
building.Tick();
Assert.IsTrue(visitor.Visible);
Assert.AreEqual(mood + blueprint.EffectOnMood, visitor.Mood);
Assert.AreEqual(satiety + blueprint.EffectOnSatiety, visitor.Satiety);
Assert.AreEqual(money - blueprint.EntryFee, visitor.Money);
}
[Test]
public void TestExitingFromQueue() {
Assert.AreEqual(EnterResult.SUCCESS, building.Enter(visitor, ref vec));
Assert.IsFalse(visitor.Visible);
Assert.IsTrue(visitor.InQueue);
Assert.AreEqual(1, building.InQueueCount);
building.Exit(visitor);
Assert.IsTrue(visitor.Visible);
Assert.IsFalse(visitor.InQueue);
Assert.AreEqual(0, building.InQueueCount);
}
}
}
fileFormatVersion: 2
guid: d7e271a54a40a7b4b9223b1c8fde60dd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment