你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-06 12:36:51 +08:00
Merge pull request #91 from obtitus/master
bugfix, to_save_str = ' '.join(to_save) fails if to_save is Noen
这个提交包含在:
@@ -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
|
||||
|
||||
|
79
gprMax/input_cmd_funcs_test.py
普通文件
79
gprMax/input_cmd_funcs_test.py
普通文件
@@ -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()
|
在新工单中引用
屏蔽一个用户