@@ -618,12 +618,12 @@ def test_zipped_sav_export_with_date_field(self):
618
618
with SavReader (os .path .join (temp_dir , "exp.sav" ), returnHeader = True ) as reader :
619
619
rows = list (reader )
620
620
self .assertTrue (len (rows ) > 1 )
621
- self .assertEqual (rows [0 ][0 ], b "expense_date" )
622
- self .assertEqual (rows [1 ][0 ], b "2013-01-03" )
623
- self .assertEqual (rows [0 ][1 ], b "A.gdate" )
624
- self .assertEqual (rows [1 ][1 ], b "2017-06-13" )
625
- self .assertEqual (rows [0 ][5 ], b "@_submission_time" )
626
- self .assertEqual (rows [1 ][5 ], b "2016-11-21 03:43:43" )
621
+ self .assertEqual (_str_if_bytes ( rows [0 ][0 ]), "expense_date" )
622
+ self .assertEqual (_str_if_bytes ( rows [1 ][0 ]), "2013-01-03" )
623
+ self .assertEqual (_str_if_bytes ( rows [0 ][1 ]), "A.gdate" )
624
+ self .assertEqual (_str_if_bytes ( rows [1 ][1 ]), "2017-06-13" )
625
+ self .assertEqual (_str_if_bytes ( rows [0 ][5 ]), "@_submission_time" )
626
+ self .assertEqual (_str_if_bytes ( rows [1 ][5 ]), "2016-11-21 03:43:43" )
627
627
628
628
shutil .rmtree (temp_dir )
629
629
@@ -670,24 +670,26 @@ def test_zipped_sav_export_dynamic_select_multiple(self):
670
670
671
671
with SavReader (os .path .join (temp_dir , "exp.sav" ), returnHeader = True ) as reader :
672
672
rows = list (reader )
673
+ rows [0 ] = list (map (_str_if_bytes , rows [0 ]))
674
+ rows [1 ] = list (map (_str_if_bytes , rows [1 ]))
673
675
self .assertTrue (len (rows ) > 1 )
674
- self .assertEqual (rows [0 ][0 ], b "sex" )
675
- self .assertEqual (rows [1 ][0 ], b "male" )
676
- self .assertEqual (rows [0 ][1 ], b "text" )
677
- self .assertEqual (rows [1 ][1 ], b "his" )
678
- self .assertEqual (rows [0 ][2 ], b "favorite_brand" )
679
- self .assertEqual (rows [1 ][2 ], b "Generic" )
680
- self .assertEqual (rows [0 ][3 ], b "name" )
681
- self .assertEqual (rows [1 ][3 ], b "Davis" )
682
- self .assertEqual (rows [0 ][4 ], b "brand_known" )
683
- self .assertEqual (rows [1 ][4 ], b "his Generic a" )
684
- self .assertEqual (rows [0 ][5 ], b "brand_known.$text" )
676
+ self .assertEqual (rows [0 ][0 ], "sex" )
677
+ self .assertEqual (rows [1 ][0 ], "male" )
678
+ self .assertEqual (rows [0 ][1 ], "text" )
679
+ self .assertEqual (rows [1 ][1 ], "his" )
680
+ self .assertEqual (rows [0 ][2 ], "favorite_brand" )
681
+ self .assertEqual (rows [1 ][2 ], "Generic" )
682
+ self .assertEqual (rows [0 ][3 ], "name" )
683
+ self .assertEqual (rows [1 ][3 ], "Davis" )
684
+ self .assertEqual (rows [0 ][4 ], "brand_known" )
685
+ self .assertEqual (rows [1 ][4 ], "his Generic a" )
686
+ self .assertEqual (rows [0 ][5 ], "brand_known.$text" )
685
687
self .assertEqual (rows [1 ][5 ], 1.0 )
686
- self .assertEqual (rows [0 ][6 ], b "brand_known.$favorite_brand" )
688
+ self .assertEqual (rows [0 ][6 ], "brand_known.$favorite_brand" )
687
689
self .assertEqual (rows [1 ][6 ], 1.0 )
688
- self .assertEqual (rows [0 ][7 ], b "brand_known.a" )
690
+ self .assertEqual (rows [0 ][7 ], "brand_known.a" )
689
691
self .assertEqual (rows [1 ][7 ], 1.0 )
690
- self .assertEqual (rows [0 ][8 ], b "brand_known.b" )
692
+ self .assertEqual (rows [0 ][8 ], "brand_known.b" )
691
693
self .assertEqual (rows [1 ][8 ], 0.0 )
692
694
693
695
shutil .rmtree (temp_dir )
@@ -764,16 +766,16 @@ def test_zipped_sav_export_with_numeric_select_one_field(self):
764
766
self .assertTrue (len (rows ) > 1 )
765
767
766
768
# expensed 1
767
- self .assertEqual (rows [0 ][0 ], b "expensed" )
768
- self .assertEqual (rows [1 ][0 ], 1 )
769
+ self .assertEqual (_str_if_bytes ( rows [0 ][0 ]), "expensed" )
770
+ self .assertEqual (_str_if_bytes ( rows [1 ][0 ]) , 1 )
769
771
770
772
# A/q1 1
771
- self .assertEqual (rows [0 ][1 ], b "A.q1" )
773
+ self .assertEqual (_str_if_bytes ( rows [0 ][1 ]), "A.q1" )
772
774
self .assertEqual (rows [1 ][1 ], 1 )
773
775
774
776
# _submission_time is a date string
775
- self .assertEqual (rows [0 ][5 ], b "@_submission_time" )
776
- self .assertEqual (rows [1 ][5 ], b "2016-11-21 03:43:43" )
777
+ self .assertEqual (_str_if_bytes ( rows [0 ][5 ]), "@_submission_time" )
778
+ self .assertEqual (_str_if_bytes ( rows [1 ][5 ]), "2016-11-21 03:43:43" )
777
779
778
780
# pylint: disable=invalid-name
779
781
def test_zipped_sav_export_with_duplicate_field_different_groups (self ):
@@ -956,35 +958,35 @@ def test_zipped_sav_export_with_numeric_select_multiple_field(self):
956
958
rows = list (reader )
957
959
self .assertTrue (len (rows ) > 1 )
958
960
959
- self .assertEqual (rows [0 ][0 ], b "expensed" )
960
- self .assertEqual (rows [1 ][0 ], b "1" )
961
+ self .assertEqual (_str_if_bytes ( rows [0 ][0 ]), "expensed" )
962
+ self .assertEqual (_str_if_bytes ( rows [1 ][0 ]), "1" )
961
963
962
964
# expensed.1 is selected hence True, 1.00 or 1 in SPSS
963
- self .assertEqual (rows [0 ][1 ], b "expensed.1" )
965
+ self .assertEqual (_str_if_bytes ( rows [0 ][1 ]), "expensed.1" )
964
966
self .assertEqual (rows [1 ][1 ], 1 )
965
967
966
968
# expensed.0 is not selected hence False, .00 or 0 in SPSS
967
- self .assertEqual (rows [0 ][2 ], b "expensed.0" )
969
+ self .assertEqual (_str_if_bytes ( rows [0 ][2 ]), "expensed.0" )
968
970
self .assertEqual (rows [1 ][2 ], 0 )
969
971
970
- self .assertEqual (rows [0 ][3 ], b "A.q1" )
971
- self .assertEqual (rows [1 ][3 ], b "1" )
972
+ self .assertEqual (_str_if_bytes ( rows [0 ][3 ]), "A.q1" )
973
+ self .assertEqual (_str_if_bytes ( rows [1 ][3 ]), "1" )
972
974
973
975
# ensure you get a numeric value for multiple select with choice
974
976
# filters
975
- self .assertEqual (rows [0 ][6 ], b "A.q2" )
976
- self .assertEqual (rows [1 ][6 ], b "1" )
977
+ self .assertEqual (_str_if_bytes ( rows [0 ][6 ]), "A.q2" )
978
+ self .assertEqual (_str_if_bytes ( rows [1 ][6 ]), "1" )
977
979
978
980
# expensed.1 is selected hence True, 1.00 or 1 in SPSS
979
- self .assertEqual (rows [0 ][4 ], b "A.q1.1" )
981
+ self .assertEqual (_str_if_bytes ( rows [0 ][4 ]), "A.q1.1" )
980
982
self .assertEqual (rows [1 ][4 ], 1 )
981
983
982
984
# expensed.0 is not selected hence False, .00 or 0 in SPSS
983
- self .assertEqual (rows [0 ][5 ], b "A.q1.0" )
985
+ self .assertEqual (_str_if_bytes ( rows [0 ][5 ]), "A.q1.0" )
984
986
self .assertEqual (rows [1 ][5 ], 0 )
985
987
986
- self .assertEqual (rows [0 ][12 ], b "@_submission_time" )
987
- self .assertEqual (rows [1 ][12 ], b "2016-11-21 03:43:43" )
988
+ self .assertEqual (_str_if_bytes ( rows [0 ][12 ]), "@_submission_time" )
989
+ self .assertEqual (_str_if_bytes ( rows [1 ][12 ]), "2016-11-21 03:43:43" )
988
990
989
991
shutil .rmtree (temp_dir )
990
992
@@ -1170,10 +1172,10 @@ def test_zipped_sav_export_with_duplicate_column_name(self):
1170
1172
rows = list (reader )
1171
1173
1172
1174
# Check that columns are present
1173
- self .assertIn (b "Sport" , rows [0 ])
1175
+ self .assertIn ("Sport" , _str_if_bytes ( rows [0 ]) )
1174
1176
# Check for sport in first 5 characters
1175
1177
# because rows contains 'sport@d4b6'
1176
- self .assertIn (b "sport" , [x [0 :5 ] for x in rows [0 ]])
1178
+ self .assertIn ("sport" , list ( map ( _str_if_bytes , [x [0 :5 ] for x in rows [0 ]])) )
1177
1179
1178
1180
# pylint: disable=invalid-name
1179
1181
def test_xlsx_export_works_with_unicode (self ):
@@ -3044,46 +3046,45 @@ def test_zipped_sav_export_with_osm_data(self):
3044
3046
with SavReader (os .path .join (temp_dir , "osm.sav" ), returnHeader = True ) as reader :
3045
3047
rows = list (reader )
3046
3048
expected_column_headers = [
3047
- x .encode ("8" )
3048
- for x in [
3049
- "photo" ,
3050
- "osm_road" ,
3051
- "osm_building" ,
3052
- "fav_color" ,
3053
- "form_completed" ,
3054
- "meta.instanceID" ,
3055
- "@_id" ,
3056
- "@_uuid" ,
3057
- "@_submission_time" ,
3058
- "@_index" ,
3059
- "@_parent_table_name" ,
3060
- "@_parent_index" ,
3061
- "@_tags" ,
3062
- "@_notes" ,
3063
- "@_version" ,
3064
- "@_duration" ,
3065
- "@_submitted_by" ,
3066
- "osm_road_ctr_lat" ,
3067
- "osm_road_ctr_lon" ,
3068
- "osm_road_highway" ,
3069
- "osm_road_lanes" ,
3070
- "osm_road_name" ,
3071
- "osm_road_way_id" ,
3072
- "osm_building_building" ,
3073
- "osm_building_building_levels" ,
3074
- "osm_building_ctr_lat" ,
3075
- "osm_building_ctr_lon" ,
3076
- "osm_building_name" ,
3077
- "osm_building_way_id" ,
3078
- ]
3049
+ "photo" ,
3050
+ "osm_road" ,
3051
+ "osm_building" ,
3052
+ "fav_color" ,
3053
+ "form_completed" ,
3054
+ "meta.instanceID" ,
3055
+ "@_id" ,
3056
+ "@_uuid" ,
3057
+ "@_submission_time" ,
3058
+ "@_index" ,
3059
+ "@_parent_table_name" ,
3060
+ "@_parent_index" ,
3061
+ "@_tags" ,
3062
+ "@_notes" ,
3063
+ "@_version" ,
3064
+ "@_duration" ,
3065
+ "@_submitted_by" ,
3066
+ "osm_road_ctr_lat" ,
3067
+ "osm_road_ctr_lon" ,
3068
+ "osm_road_highway" ,
3069
+ "osm_road_lanes" ,
3070
+ "osm_road_name" ,
3071
+ "osm_road_way_id" ,
3072
+ "osm_building_building" ,
3073
+ "osm_building_building_levels" ,
3074
+ "osm_building_ctr_lat" ,
3075
+ "osm_building_ctr_lon" ,
3076
+ "osm_building_name" ,
3077
+ "osm_building_way_id" ,
3079
3078
]
3079
+ rows [0 ] = list (map (_str_if_bytes , rows [0 ]))
3080
+ rows [1 ] = list (map (_str_if_bytes , rows [1 ]))
3080
3081
self .assertEqual (sorted (rows [0 ]), sorted (expected_column_headers ))
3081
- self .assertEqual (rows [1 ][0 ], b "1424308569120.jpg" )
3082
- self .assertEqual (rows [1 ][1 ], b "OSMWay234134797.osm" )
3083
- self .assertEqual (rows [1 ][2 ], b "23.708174238006087" )
3084
- self .assertEqual (rows [1 ][4 ], b "tertiary" )
3085
- self .assertEqual (rows [1 ][6 ], b "Patuatuli Road" )
3086
- self .assertEqual (rows [1 ][13 ], b "kol" )
3082
+ self .assertEqual (rows [1 ][0 ], "1424308569120.jpg" )
3083
+ self .assertEqual (rows [1 ][1 ], "OSMWay234134797.osm" )
3084
+ self .assertEqual (rows [1 ][2 ], "23.708174238006087" )
3085
+ self .assertEqual (rows [1 ][4 ], "tertiary" )
3086
+ self .assertEqual (rows [1 ][6 ], "Patuatuli Road" )
3087
+ self .assertEqual (rows [1 ][13 ], "kol" )
3087
3088
3088
3089
def test_show_choice_labels (self ):
3089
3090
"""
@@ -3610,44 +3611,44 @@ def test_sav_export_with_duplicate_metadata(self, mock_uuid):
3610
3611
3611
3612
expected_data = [
3612
3613
[
3613
- b "gps" ,
3614
- b "@_gps_latitude" ,
3615
- b "@_gps_longitude" ,
3616
- b "@_gps_altitude" ,
3617
- b "@_gps_precision" ,
3618
- b "gps@52a9" ,
3619
- b "@_gps_latitude_52a9" ,
3620
- b "@_gps_longitude_52a9" ,
3621
- b "@_gps_altitude_52a9" ,
3622
- b "@_gps_precision_52a9" ,
3623
- b "instanceID" ,
3624
- b "@_id" ,
3625
- b "@_uuid" ,
3626
- b "@_submission_time" ,
3627
- b "@_index" ,
3628
- b "@_parent_table_name" ,
3629
- b "@_parent_index" ,
3630
- b "@_tags" ,
3631
- b "@_notes" ,
3632
- b "@_version" ,
3633
- b "@_duration" ,
3634
- b "@_submitted_by" ,
3614
+ "gps" ,
3615
+ "@_gps_latitude" ,
3616
+ "@_gps_longitude" ,
3617
+ "@_gps_altitude" ,
3618
+ "@_gps_precision" ,
3619
+ "gps@52a9" ,
3620
+ "@_gps_latitude_52a9" ,
3621
+ "@_gps_longitude_52a9" ,
3622
+ "@_gps_altitude_52a9" ,
3623
+ "@_gps_precision_52a9" ,
3624
+ "instanceID" ,
3625
+ "@_id" ,
3626
+ "@_uuid" ,
3627
+ "@_submission_time" ,
3628
+ "@_index" ,
3629
+ "@_parent_table_name" ,
3630
+ "@_parent_index" ,
3631
+ "@_tags" ,
3632
+ "@_notes" ,
3633
+ "@_version" ,
3634
+ "@_duration" ,
3635
+ "@_submitted_by" ,
3635
3636
],
3636
3637
[
3637
- b "4.0 36.1 5000 20" ,
3638
+ "4.0 36.1 5000 20" ,
3638
3639
4.0 ,
3639
3640
36.1 ,
3640
3641
5000.0 ,
3641
3642
20.0 ,
3642
- b "1.0 36.1 2000 20" ,
3643
+ "1.0 36.1 2000 20" ,
3643
3644
1.0 ,
3644
3645
36.1 ,
3645
3646
2000.0 ,
3646
3647
20.0 ,
3647
3648
"" ,
3648
3649
None ,
3649
3650
"" ,
3650
- b "2016-11-21 03:42:43" ,
3651
+ "2016-11-21 03:42:43" ,
3651
3652
1.0 ,
3652
3653
"" ,
3653
3654
- 1.0 ,
@@ -3663,5 +3664,7 @@ def test_sav_export_with_duplicate_metadata(self, mock_uuid):
3663
3664
) as reader :
3664
3665
rows = list (reader )
3665
3666
self .assertEqual (len (rows ), 2 )
3667
+ rows [0 ] = list (map (_str_if_bytes , rows [0 ]))
3668
+ rows [1 ] = list (map (_str_if_bytes , rows [1 ]))
3666
3669
self .assertEqual (expected_data , rows )
3667
3670
shutil .rmtree (temp_dir )
0 commit comments