@@ -573,14 +573,14 @@ function test_parse_S()
573573 io,
574574 """
575575 S0 8 zork
576- 02
577- 16
578- 27
579- 38
580- 49
581- 53
582- 65
583- 84
576+ 0 2
577+ 1 6
578+ 2 7
579+ 3 8
580+ 4 9
581+ 5 3
582+ 6 5
583+ 8 4
584584 """ ,
585585 )
586586 seekstart (io)
@@ -592,6 +592,32 @@ function test_parse_S()
592592 return
593593end
594594
595+ function test_parse_S_Float64 ()
596+ model = NL. _CacheModel ()
597+ io = IOBuffer ()
598+ write (
599+ io,
600+ """
601+ S4 8 zork
602+ 0 2.0
603+ 1 6.0
604+ 2 7.0
605+ 3 8.0
606+ 4 9.0
607+ 5 3.0
608+ 6 5.0
609+ 8 4.0
610+ """ ,
611+ )
612+ seekstart (io)
613+ @test_logs (
614+ (:warn , " Skipping suffix: `S4 8 zork`" ),
615+ NL. _parse_section (io, model),
616+ )
617+ @test eof (io)
618+ return
619+ end
620+
595621function test_hs071 ()
596622 model = NL. Model ()
597623 open (joinpath (@__DIR__ , " data" , " hs071.nl" ), " r" ) do io
@@ -880,14 +906,14 @@ function test_binary_parse_O()
880906 model. is_binary = true
881907 NL. _resize_variables (model, 4 )
882908 io = IOBuffer ()
883- write (io, Char (' O' ), Int32 (0 ), Int32 (0 ))
884- write (io, Char (' o' ), Int32 (2 ))
885- write (io, Char (' v' ), Int32 (0 ))
886- write (io, Char (' o' ), Int32 (2 ))
887- write (io, Char (' v' ), Int32 (2 ))
888- write (io, Char (' o' ), Int32 (2 ))
889- write (io, Char (' v' ), Int32 (3 ))
890- write (io, Char (' v' ), Int32 (1 ))
909+ write (io, Cchar (' O' ), Int32 (0 ), Int32 (0 ))
910+ write (io, Cchar (' o' ), Int32 (2 ))
911+ write (io, Cchar (' v' ), Int32 (0 ))
912+ write (io, Cchar (' o' ), Int32 (2 ))
913+ write (io, Cchar (' v' ), Int32 (2 ))
914+ write (io, Cchar (' o' ), Int32 (2 ))
915+ write (io, Cchar (' v' ), Int32 (3 ))
916+ write (io, Cchar (' v' ), Int32 (1 ))
891917 seekstart (io)
892918 NL. _parse_section (io, model)
893919 @test eof (io)
@@ -902,7 +928,7 @@ function test_binary_parse_O_max()
902928 model. is_binary = true
903929 NL. _resize_variables (model, 4 )
904930 io = IOBuffer ()
905- write (io, Char (' O' ), Int32 (0 ), Int32 (1 ), Char (' v' ), Int32 (0 ))
931+ write (io, Cchar (' O' ), Int32 (0 ), Int32 (1 ), Cchar (' v' ), Int32 (0 ))
906932 seekstart (io)
907933 NL. _parse_section (io, model)
908934 @test eof (io)
@@ -917,7 +943,7 @@ function test_binary_parse_x()
917943 model. is_binary = true
918944 NL. _resize_variables (model, 5 )
919945 io = IOBuffer ()
920- write (io, Char (' x' ), Int32 (3 ))
946+ write (io, Cchar (' x' ), Int32 (3 ))
921947 write (io, Int32 (0 ), 1.1 )
922948 write (io, Int32 (3 ), 2.2 )
923949 write (io, Int32 (2 ), 3.3 )
@@ -932,7 +958,7 @@ function test_parse_d()
932958 model = NL. _CacheModel ()
933959 model. is_binary = true
934960 io = IOBuffer ()
935- write (io, Char (' d' ), Int32 (3 ))
961+ write (io, Cchar (' d' ), Int32 (3 ))
936962 write (io, Int32 (0 ), 1.1 )
937963 write (io, Int32 (3 ), 2.2 )
938964 write (io, Int32 (2 ), 3.3 )
@@ -947,7 +973,7 @@ function test_binary_parse_r()
947973 model. is_binary = true
948974 NL. _resize_constraints (model, 5 )
949975 io = IOBuffer ()
950- write (io, Char (' r' ))
976+ write (io, Cchar (' r' ))
951977 write (io, Cchar (' 1' ), 3.3 )
952978 write (io, Cchar (' 3' ))
953979 write (io, Cchar (' 0' ), 1.1 , 2.2 )
@@ -966,7 +992,7 @@ function test_binary_parse_b()
966992 model. is_binary = true
967993 NL. _resize_variables (model, 5 )
968994 io = IOBuffer ()
969- write (io, Char (' b' ))
995+ write (io, Cchar (' b' ))
970996 write (io, Cchar (' 1' ), 3.3 )
971997 write (io, Cchar (' 3' ))
972998 write (io, Cchar (' 0' ), 1.1 , 2.2 )
@@ -985,7 +1011,7 @@ function test_binary_parse_k()
9851011 model. is_binary = true
9861012 NL. _resize_variables (model, 3 )
9871013 io = IOBuffer ()
988- write (io, Char (' k' ), Int32 (2 ))
1014+ write (io, Cchar (' k' ), Int32 (2 ))
9891015 write (io, Int32 (2 ))
9901016 write (io, Int32 (4 ))
9911017 seekstart (io)
@@ -994,6 +1020,52 @@ function test_binary_parse_k()
9941020 return
9951021end
9961022
1023+ function test_binary_parse_S ()
1024+ model = NL. _CacheModel ()
1025+ model. is_binary = true
1026+ io = IOBuffer ()
1027+ write (io, Cchar (' S' ), Int32 (0 ), Int32 (8 ))
1028+ write (io, Int32 (4 ), Cchar (' z' ), Cchar (' o' ), Cchar (' r' ), Cchar (' k' ))
1029+ write (io, Int32 (0 ), Int32 (2 ))
1030+ write (io, Int32 (1 ), Int32 (6 ))
1031+ write (io, Int32 (2 ), Int32 (7 ))
1032+ write (io, Int32 (3 ), Int32 (8 ))
1033+ write (io, Int32 (4 ), Int32 (9 ))
1034+ write (io, Int32 (5 ), Int32 (3 ))
1035+ write (io, Int32 (6 ), Int32 (5 ))
1036+ write (io, Int32 (8 ), Int32 (4 ))
1037+ seekstart (io)
1038+ @test_logs (
1039+ (:warn , " Skipping suffix: `S0 8 zork`" ),
1040+ NL. _parse_section (io, model),
1041+ )
1042+ @test eof (io)
1043+ return
1044+ end
1045+
1046+ function test_binary_parse_S_Float64 ()
1047+ model = NL. _CacheModel ()
1048+ model. is_binary = true
1049+ io = IOBuffer ()
1050+ write (io, Cchar (' S' ), Int32 (4 ), Int32 (8 ))
1051+ write (io, Int32 (4 ), Cchar (' z' ), Cchar (' o' ), Cchar (' r' ), Cchar (' k' ))
1052+ write (io, Int32 (0 ), 2.1 )
1053+ write (io, Int32 (1 ), 6.1 )
1054+ write (io, Int32 (2 ), 7.1 )
1055+ write (io, Int32 (3 ), 8.1 )
1056+ write (io, Int32 (4 ), 9.1 )
1057+ write (io, Int32 (5 ), 3.1 )
1058+ write (io, Int32 (6 ), 5.1 )
1059+ write (io, Int32 (8 ), 4.1 )
1060+ seekstart (io)
1061+ @test_logs (
1062+ (:warn , " Skipping suffix: `S4 8 zork`" ),
1063+ NL. _parse_section (io, model),
1064+ )
1065+ @test eof (io)
1066+ return
1067+ end
1068+
9971069end
9981070
9991071TestNonlinearRead. runtests ()
0 commit comments