From 37a8a825450ff4db473d03f03258b38dd16967ab Mon Sep 17 00:00:00 2001
From: "Mads M. Pedersen" <mmpe@dtu.dk>
Date: Thu, 4 May 2017 11:56:56 +0200
Subject: [PATCH] flex test bugfix

---
 wetb/flex/_io.py                | 38 +++++++++++++++++++++++++--------
 wetb/flex/tests/test_flex_io.py |  6 +++---
 wetb/flex/tests/test_sensor.py  |  9 +++++++-
 3 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/wetb/flex/_io.py b/wetb/flex/_io.py
index d3e4e3ea..f9419f8b 100644
--- a/wetb/flex/_io.py
+++ b/wetb/flex/_io.py
@@ -7,7 +7,16 @@ import struct
 import numpy as np
 import os
 
-def load(filename, dtype=np.float):
+def load(filename, name_stop=8, dtype=np.float):
+    """
+    Parameters
+    ----------
+    - filename
+    - name_stop : int or str
+        if int: Number of characters for name
+        if str: name-description delimiter, e.g. " "
+    - dtype    
+    """
     if isinstance(filename, str):
         fid = open(filename,'rb')
     elif hasattr(filename, "name"):
@@ -50,7 +59,7 @@ def load(filename, dtype=np.float):
     
     
     sensor_filename = os.path.join(os.path.dirname(filename), "sensor")
-    sensor_info = {info[0]:info[1:] for info in read_sensor_info(sensor_filename) }
+    sensor_info = {info[0]:info[1:] for info in read_sensor_info(sensor_filename, name_stop) }
 
     # set gain and offset for "Time"
     gains = []
@@ -83,7 +92,15 @@ def load(filename, dtype=np.float):
     return time, data, info 
 
 
-def read_sensor_info(sensor_file):
+def read_sensor_info(sensor_file, name_stop=8):
+    """
+    Parameters
+    ----------
+    - sensor_file
+    - name_stop : int or str
+        if int: Number of characters for name
+        if str: name-description delimiter, e.g. " "    
+    """
 
     if hasattr(sensor_file, 'readlines'):
         sensor_info_lines = sensor_file.readlines()[2:]
@@ -99,12 +116,15 @@ def read_sensor_info(sensor_file):
         gain = float(line[1])
         offset = float(line[2])
         unit = line[5]
-        name_desc = " ".join(line[6:])
-        name = name_desc[:8].split()[0]
-        description = name_desc[8:]
-#        name = line[6]
-#        description = " ".join(line[7:])
-
+        if isinstance(name_stop,int):
+            name_desc = " ".join(line[6:])
+            name = name_desc[:name_stop].strip()
+            description = name_desc[name_stop:].strip()
+        elif isinstance(name_stop,str):
+            name_desc = (" ".join(line[6:])).split(name_stop)
+            name = name_desc[0].strip()
+            description = name_stop.join(name_desc[1:]).strip()
+            
 
         sensor_info.append((nr, name, unit, description, gain, offset))
     return sensor_info
diff --git a/wetb/flex/tests/test_flex_io.py b/wetb/flex/tests/test_flex_io.py
index 85aff612..b82a693c 100644
--- a/wetb/flex/tests/test_flex_io.py
+++ b/wetb/flex/tests/test_flex_io.py
@@ -15,9 +15,9 @@ class Test(unittest.TestCase):
     def test_load(self):
         time, data, info = flex.load(tfp+"test1/test.int")
         self.assertEqual(data.shape, (800,7))
-        self.assertEqual(info['attribute_names'][1], "WSP_gl._")
-        self.assertEqual(info['attribute_units'][1], "m/s")
-        self.assertEqual(info['attribute_descriptions'][1], " Free wind speed Vy, gl. coo, of gl. pos 0.75, 0.00, -40.75")
+        self.assertEqual(info['attribute_names'][0], "WSP_gl._")
+        self.assertEqual(info['attribute_units'][0], "m/s")
+        self.assertEqual(info['attribute_descriptions'][0], "Free wind speed Vy, gl. coo, of gl. pos 0.75, 0.00, -40.75")
 
         self.assertAlmostEqual(data[0, 1], 12.037,3)
 
diff --git a/wetb/flex/tests/test_sensor.py b/wetb/flex/tests/test_sensor.py
index 3a88479b..5a3e3ffe 100644
--- a/wetb/flex/tests/test_sensor.py
+++ b/wetb/flex/tests/test_sensor.py
@@ -16,10 +16,17 @@ class Test(unittest.TestCase):
         sensor_info = read_sensor_info(tfp + "test_sensor_info/sensor")
         nr, name, unit, description, _, _ = sensor_info[17]
         self.assertEqual(nr, 18)
-        self.assertEqual(name, "Mz coo: ")
+        self.assertEqual(name, "Mz coo:")
         self.assertEqual(unit, "kNm")
         self.assertEqual(description, "MomentMz Mbdy:tower nodenr: 1 coo: tower tower base flange")
 
+    def test_sensor_load_name_stop(self):
+        sensor_info = read_sensor_info(tfp + "test_sensor_info/sensor"," ")
+        nr, name, unit, description, _, _ = sensor_info[17]
+        self.assertEqual(nr, 18)
+        self.assertEqual(name, "Mz")
+        self.assertEqual(unit, "kNm")
+        self.assertEqual(description, "coo: MomentMz Mbdy:tower nodenr: 1 coo: tower tower base flange")
 
 if __name__ == "__main__":
     #import sys;sys.argv = ['', 'Test.test_sensor_load']
-- 
GitLab