docs: update Proof of Potato model to v0.2
This commit is contained in:
1 parent
e2d0be22fd
commit
7397045a54
19 files changed
+588
-813
No files matched your search
@@ -0,0 +1,35 @@
|
||||
"""Tests of illustrative, non-consensus simulation only."""
|
||||
import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'scripts'))
|
||||
from simulate_pop_v02 import fee_example, progressive_example, qualify, simulate
|
||||
import random
|
||||
|
||||
|
||||
class FeeAndSimulationTests(unittest.TestCase):
|
||||
def test_example_fees_monotonic(self):
|
||||
for reward in (0, 1, 10, 100, 1000):
|
||||
self.assertEqual(fee_example(1, reward), 0)
|
||||
self.assertGreater(fee_example(3, reward), fee_example(2, reward))
|
||||
self.assertLess(progressive_example(0), progressive_example(100))
|
||||
|
||||
def test_no_ticket_when_probability_zero(self):
|
||||
self.assertEqual(qualify(random.Random(1), 3, 0, 100),
|
||||
(False, fee_example(2, 100) + fee_example(3, 100)))
|
||||
|
||||
def test_free_win_ends_without_fee(self):
|
||||
self.assertEqual(qualify(random.Random(1), 3, 1, 100), (True, 0))
|
||||
|
||||
def test_reproducible(self):
|
||||
a = simulate(5, 100, 123, .7, 2, 50)
|
||||
b = simulate(5, 100, 123, .7, 2, 50)
|
||||
self.assertEqual(a, b)
|
||||
|
||||
def test_invalid_windows(self):
|
||||
with self.assertRaises(ValueError):
|
||||
fee_example(4, 1)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user