You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
3.0 KiB
68 lines
3.0 KiB
import pytest
|
|
from piecewise import *
|
|
|
|
class TestPiecewiseConstant:
|
|
def test_rmul(self):
|
|
pc = Piecewise_Constant(7, [(-10, 5), (2, 3)])
|
|
assert 3*pc == Piecewise_Constant(21, [(-10, 15), (2, 9)])
|
|
|
|
def test_neg(self):
|
|
pc = Piecewise_Constant(7, [(-10, 5), (1, 0), (2, 3)])
|
|
assert -pc == Piecewise_Constant(-7, [(-10, -5), (1, 0), (2, -3)])
|
|
|
|
def test_add(self):
|
|
pc = Piecewise_Constant(7, [(-10, 5), (1, 0), (2, 3)])
|
|
assert pc+11 == Piecewise_Constant(18, [(-10, 16), (1, 11), (2, 14)])
|
|
|
|
def test_add_conditional_nzstart(self):
|
|
pc = Piecewise_Constant(7, [(-10, 5), (1, 0), (2, 3)])
|
|
assert pc.add_conditional(-3) == Piecewise_Constant(4, [(-10, 2), (1, 0), (2, 0)])
|
|
|
|
def test_add_conditional_zstart(self):
|
|
pc = Piecewise_Constant(0, [(-10, 5), (1, 0), (2, 3)])
|
|
assert pc.add_conditional(-3) == Piecewise_Constant(0, [(-10, 2), (1, 0), (2, 0)])
|
|
|
|
class TestConvLimPC:
|
|
def test_empty(self):
|
|
assert conv_lim_pc(None, None) == Piecewise_Constant(10000, [])
|
|
|
|
def test_no_low(self):
|
|
assert conv_lim_pc(None, 3000) == Piecewise_Constant(10000, [(3001, 0)])
|
|
|
|
def test_no_high(self):
|
|
assert conv_lim_pc(3000, None) == Piecewise_Constant(0, [(3000, 10000)])
|
|
|
|
def test_full(self):
|
|
assert conv_lim_pc(3000, 5000) == Piecewise_Constant(0, [(3000, 10000), (5001, 0)])
|
|
|
|
class TestMinSumPC:
|
|
def test_none(self):
|
|
assert min_sum_pc([]) == 0
|
|
|
|
def test_single_single(self):
|
|
assert min_sum_pc([Piecewise_Constant(0, [])]) == 0
|
|
assert min_sum_pc([Piecewise_Constant(-10, [])]) == -10
|
|
assert min_sum_pc([Piecewise_Constant(10, [])]) == 10
|
|
|
|
def test_single_mult(self):
|
|
assert min_sum_pc([Piecewise_Constant(0, [(-20, 40)])]) == 0
|
|
assert min_sum_pc([Piecewise_Constant(50, [(-20, 40)])]) == 40
|
|
assert min_sum_pc([Piecewise_Constant(-10, [(-20, 40), (1, 70)])]) == -10
|
|
assert min_sum_pc([Piecewise_Constant(100, [(-20, 70), (1, 40)])]) == 40
|
|
assert min_sum_pc([Piecewise_Constant(100, [(-20, 70), (1, 40), (17, 0)])]) == 0
|
|
|
|
def test_mult_single(self):
|
|
assert min_sum_pc([Piecewise_Constant(0, []), Piecewise_Constant(10, [])]) == 10
|
|
assert min_sum_pc([Piecewise_Constant(0, []), Piecewise_Constant(-10, [])]) == -10
|
|
assert min_sum_pc([Piecewise_Constant(-10, []), Piecewise_Constant(0, [])]) == -10
|
|
assert min_sum_pc([Piecewise_Constant(20, []), Piecewise_Constant(30, [])]) == 50
|
|
|
|
def test_mult_mult(self):
|
|
assert min_sum_pc([Piecewise_Constant(0, [(5, 11)]), Piecewise_Constant(0, [(4, 7)])]) == 0
|
|
assert min_sum_pc([Piecewise_Constant(0, [(5, 11)]), Piecewise_Constant(100, [(4, 7)])]) == 7
|
|
assert min_sum_pc([Piecewise_Constant(100, [(5, 11)]), Piecewise_Constant(0, [(4, 7)])]) == 18
|
|
assert min_sum_pc([Piecewise_Constant(100, [(5, 11), (10, 200)]), Piecewise_Constant(100, [(5, 7), (8, 200)])]) == 18
|
|
assert min_sum_pc([Piecewise_Constant(0, [(5, 11), (10, 200)]), Piecewise_Constant(0, [(6, -20), (8, 200)])]) == -9
|
|
|
|
|