|
@@ -21,7 +21,7 @@ from grass.pygrass import utils
|
|
|
from grass.pygrass.gis import Mapset
|
|
|
|
|
|
from grass.lib.gis import G_mapset_path
|
|
|
-from grass.lib.raster import Rast_write_bandref
|
|
|
+from grass.lib.raster import Rast_write_semantic_label
|
|
|
from grass.lib.imagery import (
|
|
|
Signature,
|
|
|
Ref,
|
|
@@ -31,7 +31,7 @@ from grass.lib.imagery import (
|
|
|
I_write_signatures,
|
|
|
I_fopen_signature_file_old,
|
|
|
I_read_signatures,
|
|
|
- I_sort_signatures_by_bandref,
|
|
|
+ I_sort_signatures_by_semantic_label,
|
|
|
I_free_signatures,
|
|
|
I_init_group_ref,
|
|
|
I_add_file_to_group_ref,
|
|
@@ -56,9 +56,9 @@ class SignatureFileTestCase(TestCase):
|
|
|
sigfile = I_fopen_signature_file_old(tempname(10))
|
|
|
self.assertFalse(sigfile)
|
|
|
|
|
|
- def test_roundtrip_signature_v1_norgb_one_band(self):
|
|
|
+ def test_roundtrip_signature_v1_norgb_one_label(self):
|
|
|
"""Test writing and reading back signature file (v1)
|
|
|
- wiht a single band"""
|
|
|
+ wiht a single label"""
|
|
|
|
|
|
# Create signature struct
|
|
|
So = Signature()
|
|
@@ -69,7 +69,7 @@ class SignatureFileTestCase(TestCase):
|
|
|
|
|
|
# Fill signatures struct with data
|
|
|
So.title = b"Signature title"
|
|
|
- So.bandrefs[0] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
+ So.semantic_labels[0] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
So.sig[0].status = 1
|
|
|
So.sig[0].have_color = 0
|
|
|
So.sig[0].npoints = 42
|
|
@@ -92,8 +92,10 @@ class SignatureFileTestCase(TestCase):
|
|
|
self.assertEqual(ret, 1)
|
|
|
self.assertEqual(Sn.title, b"Signature title")
|
|
|
self.assertEqual(Sn.nbands, 1)
|
|
|
- bandref = utils.decode(ctypes.cast(Sn.bandrefs[0], ctypes.c_char_p).value)
|
|
|
- self.assertEqual(bandref, "The_Doors")
|
|
|
+ semantic_label = utils.decode(
|
|
|
+ ctypes.cast(Sn.semantic_labels[0], ctypes.c_char_p).value
|
|
|
+ )
|
|
|
+ self.assertEqual(semantic_label, "The_Doors")
|
|
|
self.assertEqual(Sn.sig[0].status, 1)
|
|
|
self.assertEqual(Sn.sig[0].have_color, 0)
|
|
|
self.assertEqual(Sn.sig[0].npoints, 42)
|
|
@@ -102,7 +104,7 @@ class SignatureFileTestCase(TestCase):
|
|
|
self.assertEqual(Sn.sig[0].var[0][0], 0.7)
|
|
|
|
|
|
# Free signature struct after use
|
|
|
- So.bandrefs[0] = None
|
|
|
+ So.semantic_labels[0] = None
|
|
|
I_free_signatures(ctypes.byref(So))
|
|
|
I_free_signatures(ctypes.byref(Sn))
|
|
|
self.assertEqual(Sn.nbands, 0)
|
|
@@ -110,7 +112,7 @@ class SignatureFileTestCase(TestCase):
|
|
|
|
|
|
def test_broken_signature_v1_norgb(self):
|
|
|
"""Test reading back signature file (v1) should fail due to
|
|
|
- single band reference exceeding maximum length"""
|
|
|
+ single semantic label exceeding maximum length"""
|
|
|
|
|
|
# Create signature struct
|
|
|
So = Signature()
|
|
@@ -122,7 +124,7 @@ class SignatureFileTestCase(TestCase):
|
|
|
# Fill signatures struct with data
|
|
|
So.title = b"Signature title"
|
|
|
# len(tempname(251)) == 255
|
|
|
- So.bandrefs[0] = ctypes.create_string_buffer(tempname(251).encode())
|
|
|
+ So.semantic_labels[0] = ctypes.create_string_buffer(tempname(251).encode())
|
|
|
So.sig[0].status = 1
|
|
|
So.sig[0].have_color = 0
|
|
|
So.sig[0].npoints = 42
|
|
@@ -143,12 +145,12 @@ class SignatureFileTestCase(TestCase):
|
|
|
ret = I_read_signatures(p_old_sigfile, ctypes.byref(Sn))
|
|
|
self.assertEqual(ret, -1)
|
|
|
|
|
|
- So.bandrefs[0] = None
|
|
|
+ So.semantic_labels[0] = None
|
|
|
I_free_signatures(ctypes.byref(So))
|
|
|
I_free_signatures(ctypes.byref(Sn))
|
|
|
|
|
|
- def test_roundtrip_signature_v1_norgb_two_bands(self):
|
|
|
- """Test writing and reading back signature (v1) with two bands"""
|
|
|
+ def test_roundtrip_signature_v1_norgb_two_labelss(self):
|
|
|
+ """Test writing and reading back signature (v1) with two labels"""
|
|
|
|
|
|
# Create signature struct
|
|
|
So = Signature()
|
|
@@ -161,8 +163,8 @@ class SignatureFileTestCase(TestCase):
|
|
|
|
|
|
# Fill signatures struct with data
|
|
|
So.title = b"Signature title"
|
|
|
- So.bandrefs[0] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
- So.bandrefs[1] = ctypes.create_string_buffer(b"The_Who")
|
|
|
+ So.semantic_labels[0] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
+ So.semantic_labels[1] = ctypes.create_string_buffer(b"The_Who")
|
|
|
So.sig[0].status = 1
|
|
|
So.sig[0].have_color = 0
|
|
|
So.sig[0].npoints = 42
|
|
@@ -196,8 +198,10 @@ class SignatureFileTestCase(TestCase):
|
|
|
self.assertEqual(ret, 1)
|
|
|
self.assertEqual(Sn.title, b"Signature title")
|
|
|
self.assertEqual(Sn.nbands, 2)
|
|
|
- bandref = utils.decode(ctypes.cast(Sn.bandrefs[0], ctypes.c_char_p).value)
|
|
|
- self.assertEqual(bandref, "The_Doors")
|
|
|
+ semantic_label = utils.decode(
|
|
|
+ ctypes.cast(Sn.semantic_labels[0], ctypes.c_char_p).value
|
|
|
+ )
|
|
|
+ self.assertEqual(semantic_label, "The_Doors")
|
|
|
self.assertEqual(Sn.sig[0].status, 1)
|
|
|
self.assertEqual(Sn.sig[0].have_color, 0)
|
|
|
self.assertEqual(Sn.sig[0].npoints, 42)
|
|
@@ -207,8 +211,10 @@ class SignatureFileTestCase(TestCase):
|
|
|
self.assertEqual(Sn.sig[0].var[0][0], 0.7)
|
|
|
self.assertEqual(Sn.sig[0].var[1][0], 0.2)
|
|
|
self.assertEqual(Sn.sig[0].var[1][1], 0.8)
|
|
|
- bandref = utils.decode(ctypes.cast(Sn.bandrefs[1], ctypes.c_char_p).value)
|
|
|
- self.assertEqual(bandref, "The_Who")
|
|
|
+ semantic_label = utils.decode(
|
|
|
+ ctypes.cast(Sn.semantic_labels[1], ctypes.c_char_p).value
|
|
|
+ )
|
|
|
+ self.assertEqual(semantic_label, "The_Who")
|
|
|
self.assertEqual(Sn.sig[1].status, 1)
|
|
|
self.assertEqual(Sn.sig[1].have_color, 0)
|
|
|
self.assertEqual(Sn.sig[1].npoints, 69)
|
|
@@ -220,31 +226,31 @@ class SignatureFileTestCase(TestCase):
|
|
|
self.assertEqual(Sn.sig[1].var[1][1], 1.8)
|
|
|
|
|
|
# Free signature struct after use
|
|
|
- So.bandrefs[0] = None
|
|
|
- So.bandrefs[1] = None
|
|
|
+ So.semantic_labels[0] = None
|
|
|
+ So.semantic_labels[1] = None
|
|
|
I_free_signatures(ctypes.byref(So))
|
|
|
I_free_signatures(ctypes.byref(Sn))
|
|
|
self.assertEqual(Sn.nbands, 0)
|
|
|
self.assertEqual(Sn.nsigs, 0)
|
|
|
|
|
|
|
|
|
-class SortSignaturesByBandrefTest(TestCase):
|
|
|
+class SortSignaturesBysemantic_labelTest(TestCase):
|
|
|
@classmethod
|
|
|
def setUpClass(cls):
|
|
|
cls.libc = ctypes.cdll.LoadLibrary(ctypes.util.find_library("c"))
|
|
|
cls.mapset = Mapset().name
|
|
|
cls.map1 = tempname(10)
|
|
|
- cls.bandref1 = "The_Doors"
|
|
|
+ cls.semantic_label1 = "The_Doors"
|
|
|
cls.map2 = tempname(10)
|
|
|
- cls.bandref2 = "The_Who"
|
|
|
+ cls.semantic_label2 = "The_Who"
|
|
|
cls.map3 = tempname(10)
|
|
|
cls.use_temp_region()
|
|
|
cls.runModule("g.region", n=1, s=0, e=1, w=0, res=1)
|
|
|
cls.runModule("r.mapcalc", expression=f"{cls.map1} = 1")
|
|
|
cls.runModule("r.mapcalc", expression=f"{cls.map2} = 1")
|
|
|
cls.runModule("r.mapcalc", expression=f"{cls.map3} = 1")
|
|
|
- Rast_write_bandref(cls.map1, cls.bandref1)
|
|
|
- Rast_write_bandref(cls.map2, cls.bandref2)
|
|
|
+ Rast_write_semantic_label(cls.map1, cls.semantic_label1)
|
|
|
+ Rast_write_semantic_label(cls.map2, cls.semantic_label2)
|
|
|
|
|
|
@classmethod
|
|
|
def tearDownClass(cls):
|
|
@@ -266,7 +272,7 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
self.assertEqual(S.nbands, 1)
|
|
|
sig_count = I_new_signature(ctypes.byref(S))
|
|
|
self.assertEqual(sig_count, 1)
|
|
|
- S.bandrefs[0] = ctypes.create_string_buffer(b"The_Troggs")
|
|
|
+ S.semantic_labels[0] = ctypes.create_string_buffer(b"The_Troggs")
|
|
|
S.title = b"Signature title"
|
|
|
S.sig[0].status = 1
|
|
|
S.sig[0].have_color = 0
|
|
@@ -276,7 +282,7 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
S.sig[0].var[0][0] = 0.7
|
|
|
|
|
|
# This should result in two error strings in ret
|
|
|
- ret = I_sort_signatures_by_bandref(ctypes.byref(S), ctypes.byref(R))
|
|
|
+ ret = I_sort_signatures_by_semantic_label(ctypes.byref(S), ctypes.byref(R))
|
|
|
self.assertTrue(bool(ret))
|
|
|
sig_err = utils.decode(ctypes.cast(ret[0], ctypes.c_char_p).value)
|
|
|
ref_err = utils.decode(ctypes.cast(ret[1], ctypes.c_char_p).value)
|
|
@@ -284,7 +290,9 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
self.assertEqual(ref_err, "The_Doors")
|
|
|
|
|
|
# Clean up memory to help track memory leaks when run by valgrind
|
|
|
- S.bandrefs[0] = None # C should not call free() on memory allocated by python
|
|
|
+ S.semantic_labels[
|
|
|
+ 0
|
|
|
+ ] = None # C should not call free() on memory allocated by python
|
|
|
I_free_signatures(ctypes.byref(S))
|
|
|
I_free_group_ref(ctypes.byref(R))
|
|
|
if ret:
|
|
@@ -310,7 +318,7 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
sig_count = I_new_signature(ctypes.byref(S))
|
|
|
self.assertEqual(sig_count, 1)
|
|
|
S.title = b"Signature title"
|
|
|
- S.bandrefs[0] = ctypes.create_string_buffer(b"The_Troggs")
|
|
|
+ S.semantic_labels[0] = ctypes.create_string_buffer(b"The_Troggs")
|
|
|
S.sig[0].status = 1
|
|
|
S.sig[0].have_color = 0
|
|
|
S.sig[0].npoints = 42
|
|
@@ -319,7 +327,7 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
S.sig[0].var[0][0] = 0.7
|
|
|
|
|
|
# This should result in two error strings in ret
|
|
|
- ret = I_sort_signatures_by_bandref(ctypes.byref(S), ctypes.byref(R))
|
|
|
+ ret = I_sort_signatures_by_semantic_label(ctypes.byref(S), ctypes.byref(R))
|
|
|
self.assertTrue(bool(ret))
|
|
|
sig_err = utils.decode(ctypes.cast(ret[0], ctypes.c_char_p).value)
|
|
|
ref_err = utils.decode(ctypes.cast(ret[1], ctypes.c_char_p).value)
|
|
@@ -327,7 +335,7 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
self.assertEqual(ref_err, "The_Doors,The_Who")
|
|
|
|
|
|
# Clean up memory to help track memory leaks when run by valgrind
|
|
|
- S.bandrefs[0] = None
|
|
|
+ S.semantic_labels[0] = None
|
|
|
I_free_signatures(ctypes.byref(S))
|
|
|
I_free_group_ref(ctypes.byref(R))
|
|
|
if ret:
|
|
@@ -337,7 +345,7 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
self.libc.free(ret[1])
|
|
|
self.libc.free(ret)
|
|
|
|
|
|
- def test_missing_bandref(self):
|
|
|
+ def test_missing_semantic_label(self):
|
|
|
# Prepare imagery group reference struct
|
|
|
R = Ref()
|
|
|
I_init_group_ref(ctypes.byref(R))
|
|
@@ -355,7 +363,7 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
sig_count = I_new_signature(ctypes.byref(S))
|
|
|
self.assertEqual(sig_count, 1)
|
|
|
S.title = b"Signature title"
|
|
|
- S.bandrefs[0] = ctypes.create_string_buffer(b"The_Who")
|
|
|
+ S.semantic_labels[0] = ctypes.create_string_buffer(b"The_Who")
|
|
|
S.sig[0].status = 1
|
|
|
S.sig[0].have_color = 0
|
|
|
S.sig[0].npoints = 42
|
|
@@ -364,22 +372,22 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
S.sig[0].var[0][0] = 0.7
|
|
|
|
|
|
# This should result in two error strings in ret
|
|
|
- ret = I_sort_signatures_by_bandref(ctypes.byref(S), ctypes.byref(R))
|
|
|
+ ret = I_sort_signatures_by_semantic_label(ctypes.byref(S), ctypes.byref(R))
|
|
|
self.assertTrue(bool(ret))
|
|
|
sig_err = utils.decode(ctypes.cast(ret[0], ctypes.c_char_p).value)
|
|
|
ref_err = utils.decode(ctypes.cast(ret[1], ctypes.c_char_p).value)
|
|
|
self.assertEqual(
|
|
|
sig_err,
|
|
|
- "<band reference missing>,<band reference missing>,"
|
|
|
- + "<band reference missing>,<band reference missing>,"
|
|
|
- + "<band reference missing>,<band reference missing>,"
|
|
|
- + "<band reference missing>,<band reference missing>,"
|
|
|
- + "<band reference missing>",
|
|
|
+ "<semantic label missing>,<semantic label missing>,"
|
|
|
+ + "<semantic label missing>,<semantic label missing>,"
|
|
|
+ + "<semantic label missing>,<semantic label missing>,"
|
|
|
+ + "<semantic label missing>,<semantic label missing>,"
|
|
|
+ + "<semantic label missing>",
|
|
|
)
|
|
|
self.assertEqual(ref_err, f"The_Doors,{self.map3}")
|
|
|
|
|
|
# Clean up memory to help track memory leaks when run by valgrind
|
|
|
- S.bandrefs[0] = None
|
|
|
+ S.semantic_labels[0] = None
|
|
|
I_free_signatures(ctypes.byref(S))
|
|
|
I_free_group_ref(ctypes.byref(R))
|
|
|
if ret:
|
|
@@ -403,7 +411,7 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
sig_count = I_new_signature(ctypes.byref(S))
|
|
|
self.assertEqual(sig_count, 1)
|
|
|
S.title = b"Signature title"
|
|
|
- S.bandrefs[0] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
+ S.semantic_labels[0] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
S.sig[0].status = 1
|
|
|
S.sig[0].have_color = 0
|
|
|
S.sig[0].npoints = 42
|
|
@@ -412,15 +420,17 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
S.sig[0].var[0][0] = 0.7
|
|
|
|
|
|
# This should result in returning NULL
|
|
|
- ret = I_sort_signatures_by_bandref(ctypes.byref(S), ctypes.byref(R))
|
|
|
+ ret = I_sort_signatures_by_semantic_label(ctypes.byref(S), ctypes.byref(R))
|
|
|
self.assertFalse(bool(ret))
|
|
|
- bandref = utils.decode(ctypes.cast(S.bandrefs[0], ctypes.c_char_p).value)
|
|
|
- self.assertEqual(bandref, "The_Doors")
|
|
|
+ semantic_label = utils.decode(
|
|
|
+ ctypes.cast(S.semantic_labels[0], ctypes.c_char_p).value
|
|
|
+ )
|
|
|
+ self.assertEqual(semantic_label, "The_Doors")
|
|
|
self.assertEqual(S.sig[0].mean[0], 2.5)
|
|
|
self.assertEqual(S.sig[0].var[0][0], 0.7)
|
|
|
|
|
|
# Clean up memory to help track memory leaks when run by valgrind
|
|
|
- S.bandrefs[0] = None
|
|
|
+ S.semantic_labels[0] = None
|
|
|
I_free_signatures(ctypes.byref(S))
|
|
|
I_free_group_ref(ctypes.byref(R))
|
|
|
if ret:
|
|
@@ -448,8 +458,8 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
sig_count = I_new_signature(ctypes.byref(S))
|
|
|
self.assertEqual(sig_count, 2)
|
|
|
S.title = b"Signature title"
|
|
|
- S.bandrefs[0] = ctypes.create_string_buffer(b"The_Who")
|
|
|
- S.bandrefs[1] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
+ S.semantic_labels[0] = ctypes.create_string_buffer(b"The_Who")
|
|
|
+ S.semantic_labels[1] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
S.sig[0].status = 1
|
|
|
S.sig[0].have_color = 0
|
|
|
S.sig[0].npoints = 69
|
|
@@ -470,17 +480,21 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
S.sig[1].var[1][1] = 0.8
|
|
|
|
|
|
# This should result in returning NULL
|
|
|
- ret = I_sort_signatures_by_bandref(ctypes.byref(S), ctypes.byref(R))
|
|
|
+ ret = I_sort_signatures_by_semantic_label(ctypes.byref(S), ctypes.byref(R))
|
|
|
self.assertFalse(bool(ret))
|
|
|
- # Band references and sig items should be swapped
|
|
|
+ # semantic labels and sig items should be swapped
|
|
|
# Static items
|
|
|
self.assertEqual(S.sig[0].npoints, 69)
|
|
|
self.assertEqual(S.sig[1].npoints, 42)
|
|
|
# Reordered items
|
|
|
- bandref1 = utils.decode(ctypes.cast(S.bandrefs[0], ctypes.c_char_p).value)
|
|
|
- self.assertEqual(bandref1, "The_Doors")
|
|
|
- bandref2 = utils.decode(ctypes.cast(S.bandrefs[1], ctypes.c_char_p).value)
|
|
|
- self.assertEqual(bandref2, "The_Who")
|
|
|
+ semantic_label1 = utils.decode(
|
|
|
+ ctypes.cast(S.semantic_labels[0], ctypes.c_char_p).value
|
|
|
+ )
|
|
|
+ self.assertEqual(semantic_label1, "The_Doors")
|
|
|
+ semantic_label2 = utils.decode(
|
|
|
+ ctypes.cast(S.semantic_labels[1], ctypes.c_char_p).value
|
|
|
+ )
|
|
|
+ self.assertEqual(semantic_label2, "The_Who")
|
|
|
self.assertEqual(S.sig[0].mean[0], 6.6)
|
|
|
self.assertEqual(S.sig[0].mean[1], 3.3)
|
|
|
self.assertEqual(S.sig[0].var[0][0], 1.8)
|
|
@@ -493,8 +507,8 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
self.assertEqual(S.sig[1].var[1][1], 0.7)
|
|
|
|
|
|
# Clean up memory to help track memory leaks when run by valgrind
|
|
|
- S.bandrefs[0] = None
|
|
|
- S.bandrefs[1] = None
|
|
|
+ S.semantic_labels[0] = None
|
|
|
+ S.semantic_labels[1] = None
|
|
|
I_free_signatures(ctypes.byref(S))
|
|
|
I_free_group_ref(ctypes.byref(R))
|
|
|
if ret:
|
|
@@ -522,8 +536,8 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
sig_count = I_new_signature(ctypes.byref(S))
|
|
|
self.assertEqual(sig_count, 2)
|
|
|
S.title = b"Signature title"
|
|
|
- S.bandrefs[0] = ctypes.create_string_buffer(b"The_Who")
|
|
|
- S.bandrefs[1] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
+ S.semantic_labels[0] = ctypes.create_string_buffer(b"The_Who")
|
|
|
+ S.semantic_labels[1] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
S.sig[0].status = 1
|
|
|
S.sig[0].have_color = 0
|
|
|
S.sig[0].npoints = 69
|
|
@@ -542,25 +556,29 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
S.sig[1].var[1][1] = 0.8
|
|
|
|
|
|
# This should result in returning NULL
|
|
|
- ret = I_sort_signatures_by_bandref(ctypes.byref(S), ctypes.byref(R))
|
|
|
+ ret = I_sort_signatures_by_semantic_label(ctypes.byref(S), ctypes.byref(R))
|
|
|
self.assertFalse(bool(ret))
|
|
|
- # Band references and sig items should not be swapped
|
|
|
+ # semantic labels and sig items should not be swapped
|
|
|
# Static items
|
|
|
self.assertEqual(S.sig[0].npoints, 69)
|
|
|
self.assertEqual(S.sig[1].npoints, 42)
|
|
|
# Reordered items
|
|
|
- bandref1 = utils.decode(ctypes.cast(S.bandrefs[0], ctypes.c_char_p).value)
|
|
|
- self.assertEqual(bandref1, "The_Who")
|
|
|
- bandref2 = utils.decode(ctypes.cast(S.bandrefs[1], ctypes.c_char_p).value)
|
|
|
- self.assertEqual(bandref2, "The_Doors")
|
|
|
+ semantic_label1 = utils.decode(
|
|
|
+ ctypes.cast(S.semantic_labels[0], ctypes.c_char_p).value
|
|
|
+ )
|
|
|
+ self.assertEqual(semantic_label1, "The_Who")
|
|
|
+ semantic_label2 = utils.decode(
|
|
|
+ ctypes.cast(S.semantic_labels[1], ctypes.c_char_p).value
|
|
|
+ )
|
|
|
+ self.assertEqual(semantic_label2, "The_Doors")
|
|
|
self.assertEqual(S.sig[0].mean[0], 3.5)
|
|
|
self.assertEqual(S.sig[0].var[0][0], 1.7)
|
|
|
self.assertEqual(S.sig[1].mean[0], 2.5)
|
|
|
self.assertEqual(S.sig[1].var[0][0], 0.7)
|
|
|
|
|
|
# Clean up memory to help track memory leaks when run by valgrind
|
|
|
- S.bandrefs[0] = None
|
|
|
- S.bandrefs[1] = None
|
|
|
+ S.semantic_labels[0] = None
|
|
|
+ S.semantic_labels[1] = None
|
|
|
I_free_signatures(ctypes.byref(S))
|
|
|
I_free_group_ref(ctypes.byref(R))
|
|
|
if ret:
|
|
@@ -592,8 +610,8 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
sig_count = I_new_signature(ctypes.byref(S))
|
|
|
self.assertEqual(sig_count, 4)
|
|
|
S.title = b"Signature title"
|
|
|
- S.bandrefs[0] = ctypes.create_string_buffer(b"The_Who")
|
|
|
- S.bandrefs[1] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
+ S.semantic_labels[0] = ctypes.create_string_buffer(b"The_Who")
|
|
|
+ S.semantic_labels[1] = ctypes.create_string_buffer(b"The_Doors")
|
|
|
S.sig[0].status = 1
|
|
|
S.sig[0].have_color = 0
|
|
|
S.sig[0].npoints = 69
|
|
@@ -632,19 +650,23 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
S.sig[3].var[1][1] = 0.6
|
|
|
|
|
|
# This should result in returning NULL
|
|
|
- ret = I_sort_signatures_by_bandref(ctypes.byref(S), ctypes.byref(R))
|
|
|
+ ret = I_sort_signatures_by_semantic_label(ctypes.byref(S), ctypes.byref(R))
|
|
|
self.assertFalse(bool(ret))
|
|
|
- # Band references and sig items should be swapped
|
|
|
+ # semantic labels and sig items should be swapped
|
|
|
# Static items
|
|
|
self.assertEqual(S.sig[0].npoints, 69)
|
|
|
self.assertEqual(S.sig[1].npoints, 42)
|
|
|
self.assertEqual(S.sig[2].npoints, 12)
|
|
|
self.assertEqual(S.sig[3].npoints, 21)
|
|
|
# Reordered items
|
|
|
- bandref1 = utils.decode(ctypes.cast(S.bandrefs[0], ctypes.c_char_p).value)
|
|
|
- self.assertEqual(bandref1, "The_Doors")
|
|
|
- bandref2 = utils.decode(ctypes.cast(S.bandrefs[1], ctypes.c_char_p).value)
|
|
|
- self.assertEqual(bandref2, "The_Who")
|
|
|
+ semantic_label1 = utils.decode(
|
|
|
+ ctypes.cast(S.semantic_labels[0], ctypes.c_char_p).value
|
|
|
+ )
|
|
|
+ self.assertEqual(semantic_label1, "The_Doors")
|
|
|
+ semantic_label2 = utils.decode(
|
|
|
+ ctypes.cast(S.semantic_labels[1], ctypes.c_char_p).value
|
|
|
+ )
|
|
|
+ self.assertEqual(semantic_label2, "The_Who")
|
|
|
self.assertEqual(S.sig[0].mean[0], 6.6)
|
|
|
self.assertEqual(S.sig[0].mean[1], 3.3)
|
|
|
self.assertEqual(S.sig[0].var[0][0], 1.8)
|
|
@@ -667,8 +689,8 @@ class SortSignaturesByBandrefTest(TestCase):
|
|
|
self.assertEqual(S.sig[3].var[1][1], 0.8)
|
|
|
|
|
|
# Clean up memory to help track memory leaks when run by valgrind
|
|
|
- S.bandrefs[0] = None
|
|
|
- S.bandrefs[1] = None
|
|
|
+ S.semantic_labels[0] = None
|
|
|
+ S.semantic_labels[1] = None
|
|
|
I_free_signatures(ctypes.byref(S))
|
|
|
I_free_group_ref(ctypes.byref(R))
|
|
|
if ret:
|