#!/usr/bin/env python
# encoding: utf-8
# <<BEGIN-copyright>>
# <<END-copyright>>
"""
test fudge/gnds/reactionData/
dbrown, 12/5/2012
"""
import unittest
from fudge.gnds.reactionData.crossSection import *
defaultAccuracy = 0.001
from xData import XYs
[docs]class TestPointwise( unittest.TestCase ):
[docs] def test_basic_stuff(self):
ptwise_const=XYs1d(axes=XYs1d.defaultAxes(labelsUnits={
XYs.yAxisIndex : ( 'crossSection', 'b' ),
XYs.xAxisIndex : ( 'energy_in', 'eV' ) }), data=[ [1e-5,1.0], [20.0e6,1.0] ] )
self.assertEqual(ptwise_const.domainUnit, 'eV' )
self.assertEqual(ptwise_const.toXMLList(), [
'<XYs1d>',
' <axes>',
' <axis index="1" label="energy_in" unit="eV"/>',
' <axis index="0" label="crossSection" unit="b"/></axes>',
' <values>',
' 1.00000000e-05 1.00000000e+00 2.00000000e+07 1.00000000e+00</values></XYs1d>'] )
[docs] def test_group(self):
ptwise=XYs1d(axes=XYs1d.defaultAxes(), data=[
[1e-5,1.0],
[1.0,1.0],
[10.0,2.0],
[100.0,3.0],
[1000.0,1.0],
[20.0e6,1.0] ] )
# ptwise.plot()
ptwise.group( [1e-5,1.0,1000.0,20.e6] )#.plot()
[docs] def test_evaluate(self):
ptwise_const=XYs1d(axes=XYs1d.defaultAxes(labelsUnits={ \
XYs.yAxisIndex : ( 'crossSection', 'b' ), \
XYs.xAxisIndex : ( 'energy_in', 'eV' ) }), data=[ [1e-5,1.0], [20.0e6,1.0] ] )
self.assertEqual(ptwise_const.evaluate( 10.0e6 ), 1.0 )
[docs]class TestCrossSection( unittest.TestCase ):
[docs] def setUp(self):
# A constant (kind of like (n,el))
self.xs_const = component()
self.ptwise_const=XYs1d(label='eval',axes=XYs1d.defaultAxes(labelsUnits={ \
XYs.yAxisIndex : ( 'crossSection', 'b' ), \
XYs.xAxisIndex : ( 'energy_in', 'eV' ) }), \
data=[ [1e-5,1.0], [20.0e6,1.0] ] )
self.xs_const.add(self.ptwise_const)
# A triangle (kind of like (n,2n), if you squint real hard)
self.xs_triangle = component()
self.ptwise_triangle=XYs1d(label='eval',axes=XYs1d.defaultAxes(labelsUnits={ \
XYs.yAxisIndex : ( 'crossSection', 'b' ), \
XYs.xAxisIndex : ( 'energy_in', 'eV' ) }), \
data=[ [1e6,0.0], [10.0e6,1.0], [20.0e6,0.0] ] )
self.xs_triangle.add(self.ptwise_triangle)
[docs] def test_basic_stuff(self):
self.assertTrue( isinstance( self.xs_const, component ) )
self.assertEqual( self.xs_const.attribute, None )
self.assertEqual( self.xs_const.moniker, 'crossSection' )
self.assertEqual( self.xs_const.domainUnit, 'eV' )
[docs] def test_xlink(self):
self.assertEqual( self.xs_const.toRelativeXLink(), '' )
[docs] def test_parent(self):
'''
Tests of traversing up GNDS hierarchy
'''
self.assertEqual( self.xs_const.ancestor, None )
self.assertEqual( self.xs_const.getRootAncestor(), self.xs_const )
self.assertEqual( self.xs_const.ancestor, None )
self.xs_const.setAncestor( 'fred' )
self.assertEqual( self.xs_const.ancestor, 'fred' )
[docs] def test_ancestry(self):
'''
FIXME: findAttributeInAncestry
FIXME: findClassInAncestry
'''
pass
[docs] def test_evaluated(self):
self.assertEqual( self.xs_const.evaluated.label, 'eval' )
self.assertEqual( self.xs_const.evaluated.moniker, 'XYs1d' )
self.assertEqual( self.xs_const.evaluated.evaluate(1.4e5), 1.0 )
[docs] def test_domains(self):
for form in self.xs_const:
self.assertEqual(form.domainMax, 20e6 )
self.assertEqual(form.domainMax, 20.0e6 )
self.assertEqual(form.domainMin, 1.0e-5 )
self.assertEqual(form.domainUnitConversionFactor('MeV'), 1e-6 )
self.assertEqual(form.domainMin, 1e-05 )
self.assertEqual(form.domainMax, 20000000.0 )
self.assertEqual(form.domainUnit, 'eV' )
self.assertEqual( self.xs_const.domainMax, 20.0e6 )
self.assertEqual( self.xs_const.domainMin, 1.0e-5 )
self.assertEqual( self.xs_const.domainUnitConversionFactor('MeV'), 1e-6 )
self.assertEqual( self.xs_const.domainMin, 1e-05 )
self.assertEqual( self.xs_const.domainMax, 20000000.0 )
self.assertEqual( self.xs_const.domainUnit, 'eV' )
[docs] def test_check(self):
from pqu import PQU
info = {'Q':1.0,'kinematicFactor':1.0,'dThreshold':PQU.PQU('1e-4 b'),
'crossSectionEnergyMin':PQU.PQU('1.0e-5 eV'), 'crossSectionEnergyMax':PQU.PQU('20.0 MeV'),
'CoulombChannel':False}
self.assertEqual( self.xs_const.check(info), [] )
[docs] def test_xml_output(self):
self.assertEqual( self.xs_const.toXLink(), '/crossSection' )
self.assertEqual( self.xs_const.toXMLList(), [
'<crossSection>',
' <XYs1d label="eval">',
' <axes>',
' <axis index="1" label="energy_in" unit="eV"/>',
' <axis index="0" label="crossSection" unit="b"/></axes>',
' <values>',
' 1.00000000e-05 1.00000000e+00 2.00000000e+07 1.00000000e+00</values></XYs1d></crossSection>'] )
if __name__=="__main__":
unittest.main()