Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
orangecat
ollama
Commits
cd234ce2
Commit
cd234ce2
authored
Jun 13, 2024
by
Michael Yang
Browse files
parser: add test for multibyte runes
parent
e87fc720
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
48 additions
and
16 deletions
+48
-16
parser/parser_test.go
parser/parser_test.go
+48
-16
No files found.
parser/parser_test.go
View file @
cd234ce2
...
...
@@ -11,6 +11,8 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"golang.org/x/text/encoding"
"golang.org/x/text/encoding/unicode"
)
func
TestParseFileFile
(
t
*
testing
.
T
)
{
...
...
@@ -517,14 +519,6 @@ PARAMETER param1 1
PARAMETER param2 4096
SYSTEM You are a utf16 file.
`
// simulate a utf16 le file
utf16File
:=
utf16
.
Encode
(
append
([]
rune
{
'\ufffe'
},
[]
rune
(
data
)
...
))
buf
:=
new
(
bytes
.
Buffer
)
err
:=
binary
.
Write
(
buf
,
binary
.
LittleEndian
,
utf16File
)
require
.
NoError
(
t
,
err
)
actual
,
err
:=
ParseFile
(
buf
)
require
.
NoError
(
t
,
err
)
expected
:=
[]
Command
{
{
Name
:
"model"
,
Args
:
"bob"
},
...
...
@@ -533,14 +527,52 @@ SYSTEM You are a utf16 file.
{
Name
:
"system"
,
Args
:
"You are a utf16 file."
},
}
assert
.
Equal
(
t
,
expected
,
actual
.
Commands
)
t
.
Run
(
"le"
,
func
(
t
*
testing
.
T
)
{
var
b
bytes
.
Buffer
require
.
NoError
(
t
,
binary
.
Write
(
&
b
,
binary
.
LittleEndian
,
[]
byte
{
0xff
,
0xfe
}))
require
.
NoError
(
t
,
binary
.
Write
(
&
b
,
binary
.
LittleEndian
,
utf16
.
Encode
([]
rune
(
data
))))
// simulate a utf16 be file
buf
=
new
(
bytes
.
Buffer
)
err
=
binary
.
Write
(
buf
,
binary
.
BigEndian
,
utf16File
)
require
.
NoError
(
t
,
err
)
actual
,
err
:=
ParseFile
(
&
b
)
require
.
NoError
(
t
,
err
)
actual
,
err
=
ParseFile
(
buf
)
require
.
NoError
(
t
,
err
)
assert
.
Equal
(
t
,
expected
,
actual
.
Commands
)
assert
.
Equal
(
t
,
expected
,
actual
.
Commands
)
})
t
.
Run
(
"be"
,
func
(
t
*
testing
.
T
)
{
var
b
bytes
.
Buffer
require
.
NoError
(
t
,
binary
.
Write
(
&
b
,
binary
.
BigEndian
,
[]
byte
{
0xfe
,
0xff
}))
require
.
NoError
(
t
,
binary
.
Write
(
&
b
,
binary
.
BigEndian
,
utf16
.
Encode
([]
rune
(
data
))))
actual
,
err
:=
ParseFile
(
&
b
)
require
.
NoError
(
t
,
err
)
assert
.
Equal
(
t
,
expected
,
actual
.
Commands
)
})
}
func
TestParseMultiByte
(
t
*
testing
.
T
)
{
input
:=
`FROM test
SYSTEM 你好👋`
expect
:=
[]
Command
{
{
Name
:
"model"
,
Args
:
"test"
},
{
Name
:
"system"
,
Args
:
"你好👋"
},
}
encodings
:=
[]
encoding
.
Encoding
{
unicode
.
UTF8
,
unicode
.
UTF16
(
unicode
.
LittleEndian
,
unicode
.
UseBOM
),
unicode
.
UTF16
(
unicode
.
BigEndian
,
unicode
.
UseBOM
),
}
for
_
,
encoding
:=
range
encodings
{
t
.
Run
(
fmt
.
Sprintf
(
"%s"
,
encoding
),
func
(
t
*
testing
.
T
)
{
s
,
err
:=
encoding
.
NewEncoder
()
.
String
(
input
)
require
.
NoError
(
t
,
err
)
actual
,
err
:=
ParseFile
(
strings
.
NewReader
(
s
))
require
.
NoError
(
t
,
err
)
assert
.
Equal
(
t
,
expect
,
actual
.
Commands
)
})
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment