diff options
author | 2020-07-05 20:46:11 +0100 | |
---|---|---|
committer | 2020-07-05 20:46:11 +0100 | |
commit | 36b6145307ad12a314e9fff48c0af029e908f441 (patch) | |
tree | 2cdfdf26541d7ef698ba2bc374886103528bd384 /src/lib/netlist/tests/test_pfunction.cpp | |
parent | a337931b5bb11c971c3dffd3191b6d4472fe1f43 (diff) | |
parent | a633e603cd1bc18131e25a0b65b693a3efcce480 (diff) |
Merge branch 'master' of https://github.com/mamedev/mame
Diffstat (limited to 'src/lib/netlist/tests/test_pfunction.cpp')
-rw-r--r-- | src/lib/netlist/tests/test_pfunction.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/lib/netlist/tests/test_pfunction.cpp b/src/lib/netlist/tests/test_pfunction.cpp new file mode 100644 index 00000000000..847865b4a4f --- /dev/null +++ b/src/lib/netlist/tests/test_pfunction.cpp @@ -0,0 +1,43 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud + +/// +/// \file pfunction_test.cpp +/// +/// tests for pfunction +/// + +#include "plib/ptests.h" + +#include "plib/pfunction.h" + +#define PFUNCEXPECT(formula, val) \ + EXPECT_EQ(val, plib::pfunction<double>(formula)()); + +TEST(pfunction, operators) +{ + PFUNCEXPECT("1==1", 1.0) + PFUNCEXPECT("1 *0 == 2-1-1", 1.0) + PFUNCEXPECT("0!=1", 1.0) + PFUNCEXPECT("0<1", 1.0) + PFUNCEXPECT("1>0", 1.0) + PFUNCEXPECT("0<=1", 1.0) + PFUNCEXPECT("1>=0", 1.0) + PFUNCEXPECT("1<=1", 1.0) + PFUNCEXPECT("1>=1", 1.0) + EXPECT_EQ(1.0, plib::pfunction<double>("0!=a", {"a"})({1.0})); +} + +TEST(pfunction, func_if) +{ + PFUNCEXPECT("if(1>0, 2, 0)", 2.0) + PFUNCEXPECT("if(0>1, 2, 3)", 3.0) + PFUNCEXPECT("if(sin(1)>0, 2, 3)", 3.0) // fail + EXPECT_EQ( 1.0, plib::pfunction<double>("if(A2>2.5, 0-A1, (0.07-(0.005*A1))*if(A0>2.5,1,0-1))", {"A0","A1","A2"})({1.0,-1.0,3.0})); + EXPECT_EQ(-0.065, plib::pfunction<double>("if(A2>2.5, 0-A1, (0.07-(0.005*A1))*if(A0>2.5,1,0-1))", {"A0","A1","A2"})({1.0,1.0,1.0})); + EXPECT_EQ( 0.065, plib::pfunction<double>("if(A2>2.5, 0-A1, (0.07-(0.005*A1))*if(A0>2.5,1,0-1))", {"A0","A1","A2"})({3.0,1.0,1.0})); + //EXPECT(plib::pfunction<double>("if(A2>2.5, A1, if(A0>2.5,1,(0-1)))", {"A0","A1","A2"})({1.0,1.0,1.0}), -1.0) + //PFUNCEXPECT("-1>-2", 1.0) + EXPECT_TRUE(1.0 == plib::pfunction<double>("0!=a", {"a"})({1.0})); +} + |