BikePhysicsTest.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using AdditionalMathf;
  6. using NUnit.Framework;
  7. using UnityEditor;
  8. using UnityEngine;
  9. using UnityEngine.TestTools;
  10. public class BikePhysicsTest
  11. {
  12. private const float DELTA = 1/3.6f;
  13. [Test]
  14. public void ZeroSlopeDoesntChangeSpeed()
  15. {
  16. const float speed = 30f/3.6f;
  17. var slopeSpeed = BicyclePhysics.SpeedAtGradientForSpeedAtFlat(speed, 80f, 0f);
  18. Assert.AreEqual(speed, slopeSpeed, DELTA);
  19. }
  20. [Test]
  21. public void PositiveGradientAffectsSpeed()
  22. {
  23. const float speed = 30f/3.6f;
  24. const float mass = 80f;
  25. var grad = .05f;
  26. var slopeSpeed = BicyclePhysics.SpeedAtGradientForSpeedAtFlat(speed, mass, grad);
  27. Assert.AreEqual(16.34544/3.6f, slopeSpeed, DELTA);
  28. grad = .1f;
  29. slopeSpeed = BicyclePhysics.SpeedAtGradientForSpeedAtFlat(speed, mass, grad);
  30. Assert.AreEqual(9.44704/3.6f, slopeSpeed, DELTA);
  31. grad = .15f;
  32. slopeSpeed = BicyclePhysics.SpeedAtGradientForSpeedAtFlat(speed, mass, grad);
  33. Assert.AreEqual(6.43698/3.6f, slopeSpeed, DELTA);
  34. }
  35. [Test]
  36. public void NegativeGradientAffectsSpeed()
  37. {
  38. const float speed = 30f/3.6f;
  39. const float mass = 80f;
  40. var grad = -.05f;
  41. var slopeSpeed = BicyclePhysics.SpeedAtGradientForSpeedAtFlat(speed, mass, grad);
  42. Assert.AreEqual(44.5824/3.6f, slopeSpeed, DELTA);
  43. grad = -.1f;
  44. slopeSpeed = BicyclePhysics.SpeedAtGradientForSpeedAtFlat(speed, mass, grad);
  45. Assert.AreEqual(56.91384/3.6f, slopeSpeed, DELTA);
  46. grad = -.15f;
  47. slopeSpeed = BicyclePhysics.SpeedAtGradientForSpeedAtFlat(speed, mass, grad);
  48. Assert.AreEqual(67.43808/3.6f, slopeSpeed, DELTA);
  49. }
  50. }