test: main model

This commit is contained in:
Gerard Gascón 2024-04-16 14:24:07 +02:00
parent f721cee708
commit 859d34e3bb
5 changed files with 114 additions and 13 deletions

View file

@ -3,26 +3,31 @@
public int Score { private set; get; } public int Score { private set; get; }
public readonly int SpawnRate; public readonly int SpawnRate;
private bool _needsToSpawn; public readonly int GrowIterations;
public Model(int spawnRate) : this(0, spawnRate) { } public float GrowPercentage { private set; get; }
public Model(int score, int spawnRate) { public bool NeedsToSpawn { private set; get; }
public bool NeedsToAnimate { private set; get; }
public Model(int spawnRate, int growIterations) : this(0, spawnRate, growIterations) { }
public Model(int score, int spawnRate, int growIterations) {
Score = score; Score = score;
SpawnRate = spawnRate; SpawnRate = spawnRate;
GrowIterations = growIterations;
} }
public void AddScore() { public void AddScore() {
Score++; Score++;
if (Score % SpawnRate == 0) NeedsToAnimate = NeedsToSpawn = false;
_needsToSpawn = true;
if (Score % GrowIterations == 0) {
GrowPercentage = Score / (float)(SpawnRate * GrowIterations);
NeedsToAnimate = true;
} }
if (Score % (SpawnRate * GrowIterations) == 0)
public bool NeedsToSpawn() { NeedsToSpawn = true;
bool needs = _needsToSpawn;
_needsToSpawn = false;
return needs;
} }
} }
} }

View file

@ -16,7 +16,7 @@ namespace Presenter {
_model.AddScore(); _model.AddScore();
_view.UpdateView(_model.Score); _view.UpdateView(_model.Score);
if (_model.NeedsToSpawn()) { if (_model.NeedsToSpawn) {
_spawner.SpawnRose(); _spawner.SpawnRose();
} }
} }

View file

@ -0,0 +1,93 @@
using Domain;
using NUnit.Framework;
namespace Tests {
public class ModelTests {
[Test]
public void NoPress_NoAnimation() {
Model sut = new(20, 5);
Assert.IsFalse(sut.NeedsToAnimate);
}
[Test]
public void NotEnoughPresses_NoAnimation() {
Model sut = new(20, 5);
sut.AddScore();
Assert.IsFalse(sut.NeedsToAnimate);
}
[Test]
public void EnoughPresses_Animation() {
Model sut = new(20, 5);
for (int i = 0; i < 5; i++)
sut.AddScore();
Assert.IsTrue(sut.NeedsToAnimate);
}
[Test]
public void NoPress_NoSpawn() {
Model sut = new(20, 5);
Assert.IsFalse(sut.NeedsToSpawn);
}
[Test]
public void NotEnoughPresses_NoSpawn() {
Model sut = new(20, 5);
sut.AddScore();
Assert.IsFalse(sut.NeedsToSpawn);
}
[Test]
public void EnoughPresses_Spawn() {
Model sut = new(20, 5);
for (int i = 0; i < 20 * 5; i++) {
sut.AddScore();
}
Assert.IsTrue(sut.NeedsToSpawn);
}
[Test]
public void OneIteration_UpdatesGrowPercentage() {
Model sut = new(5, 5);
for (int i = 0; i < 5; i++) {
sut.AddScore();
}
Assert.AreEqual(1f / 5f, sut.GrowPercentage);
}
[Test]
public void AllIterations_GrowCompleted() {
Model sut = new(5, 5);
for (int i = 0; i < 5 * 5; i++) {
sut.AddScore();
}
Assert.AreEqual(1f, sut.GrowPercentage);
}
[Test]
public void MoreIterations_ResetsGrowPercentage() {
Model sut = new(5, 5);
for (int i = 0; i < 6 * 5; i++) {
sut.AddScore();
}
Assert.AreEqual(1f / 5f, sut.GrowPercentage);
}
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b81eb0f05b9b4ed38c6b881421132fdd
timeCreated: 1713269019

View file

@ -11,7 +11,7 @@ namespace View {
public CustomInput CustomInput { private set; get; } public CustomInput CustomInput { private set; get; }
private void Awake() { private void Awake() {
Model = new Model(20); Model = new Model(20, 5);
IExpressionInput input = FindObjectOfType<ExpressionInput>(); IExpressionInput input = FindObjectOfType<ExpressionInput>();
IExpressionInput visibility = FindObjectOfType<UIVisibility>(); IExpressionInput visibility = FindObjectOfType<UIVisibility>();