Merge pull request #91 from obtitus/master

bugfix, to_save_str = ' '.join(to_save)  fails if to_save is Noen
这个提交包含在:
Craig Warren
2017-01-26 17:32:25 +00:00
提交者 GitHub
当前提交 36f6f3a954
共有 2 个文件被更改,包括 95 次插入3 次删除

查看文件

@@ -16,6 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with gprMax. If not, see <http://www.gnu.org/licenses/>.
import sys
from collections import namedtuple
"""This module contains functional forms of some of the most commonly used gprMax commands. It can be useful to use these within Python scripting in an input file.
@@ -613,15 +614,26 @@ def rx(x, y, z, identifier=None, to_save=None, polarisation=None, dxdy=None, rot
if rotate90origin:
if polarisation == 'x':
xf = x + dxdy[0]
try:
xf = x + dxdy[0]
except Exception as e:
raise ValueError('With polarization = x, a dxdy[0] float values is required, got dxdy=%s' % dxdy) from e
yf = y
elif polarisation == 'y':
xf = x
yf = y + dxdy[1]
try:
yf = y + dxdy[1]
except Exception as e:
raise ValueError('With polarization = y, a dxdy[1] float values is required, got dxdy=%s' % dxdy) from e
x, y, xf, yf = rotate90_edge(x, y, xf, yf, polarisation, rotate90origin)
c = Coordinate(x, y, z)
command('rx', str(c), identifier, ' '.join(to_save))
to_save_str = ''
if to_save is not None:
to_save_str = ' '.join(to_save)
command('rx', str(c), identifier, to_save_str)
return c
@@ -655,3 +667,4 @@ def rx_steps(dx=0, dy=0, dz=0):
c = Coordinate(dx, dy, dz)
command('rx_steps', str(c))
return c

查看文件

@@ -0,0 +1,79 @@
import sys
import unittest
# http://stackoverflow.com/a/17981937/1942837
from contextlib import contextmanager
from io import StringIO
@contextmanager
def captured_output():
new_out, new_err = StringIO(), StringIO()
old_out, old_err = sys.stdout, sys.stderr
try:
sys.stdout, sys.stderr = new_out, new_err
yield sys.stdout, sys.stderr
finally:
sys.stdout, sys.stderr = old_out, old_err
# end stack copy
from input_cmd_funcs import *
class My_input_cmd_funcs_test(unittest.TestCase):
def assert_output(self, out, expected_out):
"""helper function"""
output = out.getvalue().strip()
self.assertEqual(output, expected_out)
def test_rx(self):
with captured_output() as (out, err):
rx(0, 0, 0)
self.assert_output(out, '#rx: 0 0 0')
def test_rx2(self):
with captured_output() as (out, err):
rx(0, 1, 2, 'id')
self.assert_output(out, '#rx: 0 1 2 id')
def test_rx3(self):
with captured_output() as (out, err):
rx(2, 1, 0, 'idd', ['Ex'])
self.assert_output(out, '#rx: 2 1 0 idd Ex')
def test_rx4(self):
with captured_output() as (out, err):
rx(2, 1, 0, 'id', ['Ex', 'Ez'])
self.assert_output(out, '#rx: 2 1 0 id Ex Ez')
def test_rx4(self):
with captured_output() as (out, err):
rx(2, 1, 0, 'id', ['Ex', 'Ez'])
self.assert_output(out, '#rx: 2 1 0 id Ex Ez')
def test_rx_rotate_exception(self):
with self.assertRaises(ValueError):
rx(2, 1, 0, 'id', ['Ex', 'Ez'], polarisation='x', rotate90origin=(1,1)) # no dxdy given
def test_rx_rotate_success(self):
with captured_output() as (out, err):
rx(2, 1, 0, 'id', ['Ex', 'Ez'], polarisation='x', rotate90origin=(1,1), dxdy=(0,0))
self.assert_output(out, '#rx: 1 2 0 id Ex Ez') # note: x, y swapped
def test_rx_rotate_success2(self):
with captured_output() as (out, err):
rx(2, 1, 0, 'id', ['Ex', 'Ez'], polarisation='y', rotate90origin=(1,1), dxdy=(0,0))
self.assert_output(out, '#rx: 1 2 0 id Ex Ez') # note: x, y swapped
def test_src_steps(self):
with captured_output() as (out, err):
src_steps()
self.assert_output(out, '#src_steps: 0 0 0')
def test_src_steps2(self):
with captured_output() as (out, err):
src_steps(42, 43, 44.2)
self.assert_output(out, '#src_steps: 42 43 44.2')
def test_rx_steps(self):
with captured_output() as (out, err):
rx_steps()
self.assert_output(out, '#rx_steps: 0 0 0')
def test_rx_steps2(self):
with captured_output() as (out, err):
rx_steps(42, 43, 44.2)
self.assert_output(out, '#rx_steps: 42 43 44.2')
if __name__ == '__main__':
unittest.main()