migrate to standard svn repo layout
This commit is contained in:
97
tests/datatest.py
Normal file
97
tests/datatest.py
Normal file
@@ -0,0 +1,97 @@
|
||||
import sys
|
||||
import numpy
|
||||
import math
|
||||
import os.path
|
||||
import unittest
|
||||
|
||||
print "running tests on modules in source directory"
|
||||
# assume, script is in tests directory and we are testing modules in src
|
||||
sys.path[0:0]=[os.path.join(os.path.dirname(sys.argv[0]), "..", "src", "data")]
|
||||
from MeasurementResult import *
|
||||
|
||||
class TestAccumulatedValueClass(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
# is called before each test
|
||||
pass
|
||||
|
||||
def testInitialization_Empty(self):
|
||||
a=AccumulatedValue()
|
||||
self.assert_(a.mean() is None)
|
||||
self.assert_(a.mean_error() is None)
|
||||
self.assert_(a.sigma() is None)
|
||||
self.assert_(a.n==0)
|
||||
|
||||
def testInitialization_1Value(self):
|
||||
a=AccumulatedValue(0)
|
||||
self.assert_(a.mean()==0)
|
||||
self.assertAlmostEqual(a.mean_error(),0)
|
||||
self.assertAlmostEqual(a.sigma(),0)
|
||||
self.assert_(a.n==1)
|
||||
|
||||
def testInitialization_2Values(self):
|
||||
a=AccumulatedValue(1, 0.1)
|
||||
self.assert_(a.mean(),1.0)
|
||||
self.assertAlmostEqual(a.mean_error(), 0.1)
|
||||
self.assertAlmostEqual(a.sigma(), 0.1*math.sqrt(2.0))
|
||||
self.assert_(a.n==2)
|
||||
|
||||
def testInitialization_3Values(self):
|
||||
a=AccumulatedValue(1, 0.1, 10)
|
||||
self.assertAlmostEqual(a.mean(),1)
|
||||
self.assertAlmostEqual(a.mean_error(), 0.1)
|
||||
self.assertAlmostEqual(a.sigma(), 0.1*math.sqrt(10.0))
|
||||
self.assert_(a.n==10)
|
||||
|
||||
def testStatistics(self):
|
||||
test_dataset=numpy.arange(10.0)
|
||||
a=AccumulatedValue()
|
||||
for i in test_dataset:
|
||||
a+=i
|
||||
self.assert_(a.n==len(test_dataset))
|
||||
# sum x_i/n
|
||||
self.assertAlmostEqual(a.mean(), test_dataset.mean())
|
||||
# std_dev_n-1 x_i= sqrt(sum (x-xmean)**2/(n-1))
|
||||
self.assertAlmostEqual(a.sigma(), math.sqrt(((test_dataset-a.mean())**2).sum()/(len(test_dataset)-1.)))
|
||||
# std_dev_n-1 x_i/sqrt(n)
|
||||
self.assertAlmostEqual(a.mean_error(), a.sigma()/math.sqrt(len(test_dataset)))
|
||||
|
||||
def tearDown(self):
|
||||
# is called after each test
|
||||
pass
|
||||
|
||||
class TestMeasurementResult(unittest.TestCase):
|
||||
|
||||
def testImplicitCast(self):
|
||||
# check wether other data types will be converted to AccumulatedValue
|
||||
m=MeasurementResult("TestData")
|
||||
m[1.0]
|
||||
m[2.0]=2
|
||||
self.assert_(isinstance(m[1.0], AccumulatedValue))
|
||||
self.assert_(isinstance(m[2.0], AccumulatedValue))
|
||||
|
||||
def testUninitalizedEntries(self):
|
||||
# assure that entries with no data are listed as xdata
|
||||
m=MeasurementResult("TestData")
|
||||
a=m[2.0]
|
||||
self.assert_(isinstance(a, AccumulatedValue))
|
||||
self.assert_(2.0 in m)
|
||||
self.assert_(2.0 not in m.get_xdata())
|
||||
m[2.0]+=1
|
||||
self.assert_(2.0 in m.get_xdata())
|
||||
|
||||
def testZeroError(self):
|
||||
# AccumulatedValues with only one Accumulation should have 0 error
|
||||
m=MeasurementResult("TestData")
|
||||
m[0.0]
|
||||
m[1.0]=AccumulatedValue()
|
||||
m[2.0]=0
|
||||
m[3.0]=AccumulatedValue(0,1.0)
|
||||
k,v,e=m.get_errorplotdata()
|
||||
self.assert_(2.0 in k and 3.0 in k)
|
||||
self.assert_(1.0 not in k and 0.0 not in k)
|
||||
self.assertAlmostEqual(e[k==2.0][0], 0)
|
||||
self.assertAlmostEqual(e[k==3.0][0], 1.0)
|
||||
|
||||
if __name__=="__main__":
|
||||
unittest.main()
|
Reference in New Issue
Block a user