Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
p2p
go-msgio
Commits
8a7e95f2
Commit
8a7e95f2
authored
Jan 16, 2019
by
Anton Petrov
Committed by
Steven Allen
Jan 16, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test: expand tests for msgio readers and writers
parent
d932b562
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
107 additions
and
1 deletion
+107
-1
limit_test.go
limit_test.go
+25
-0
msgio_test.go
msgio_test.go
+82
-1
No files found.
limit_test.go
0 → 100644
View file @
8a7e95f2
package
msgio
import
(
"bytes"
"testing"
)
func
TestLimitReader
(
t
*
testing
.
T
)
{
buf
:=
bytes
.
NewBuffer
(
nil
)
reader
,
_
:=
LimitedReader
(
buf
)
// limit is set to 0
n
,
err
:=
reader
.
Read
([]
byte
{})
if
n
!=
0
||
err
.
Error
()
!=
"EOF"
{
t
.
Fatal
(
"Expected not to read anything"
)
}
}
func
TestLimitWriter
(
t
*
testing
.
T
)
{
buf
:=
bytes
.
NewBuffer
(
nil
)
writer
:=
NewLimitedWriter
(
buf
)
n
,
err
:=
writer
.
Write
([]
byte
{
1
,
2
,
3
})
if
n
!=
3
||
err
!=
nil
{
t
.
Fatal
(
"Expected to write 3 bytes with no errors"
)
}
err
=
writer
.
Flush
()
}
msgio_test.go
View file @
8a7e95f2
...
...
@@ -2,9 +2,11 @@ package msgio
import
(
"bytes"
"errors"
"fmt"
"io"
"math/rand"
str
"strings"
"sync"
"testing"
"time"
...
...
@@ -47,6 +49,45 @@ func TestWriteClose(t *testing.T) {
SubtestWriteClose
(
t
,
writer
,
reader
)
}
type
testIoReadWriter
struct
{
io
.
Reader
io
.
Writer
}
func
TestReadWriterClose
(
t
*
testing
.
T
)
{
r
,
w
:=
io
.
Pipe
()
var
rw
ReadWriteCloser
rw
=
NewReadWriter
(
testIoReadWriter
{
r
,
w
})
SubtestReaderWriterClose
(
t
,
rw
)
}
func
TestReadWriterCombine
(
t
*
testing
.
T
)
{
r
,
w
:=
io
.
Pipe
()
writer
:=
NewWriter
(
w
)
reader
:=
NewReader
(
r
)
rw
:=
Combine
(
writer
,
reader
)
rw
.
Close
()
}
func
TestMultiError
(
t
*
testing
.
T
)
{
emptyError
:=
multiErr
([]
error
{})
if
emptyError
.
Error
()
!=
"no errors"
{
t
.
Fatal
(
"Expected no errors"
)
}
twoErrors
:=
multiErr
([]
error
{
errors
.
New
(
"one"
),
errors
.
New
(
"two"
)})
if
eStr
:=
twoErrors
.
Error
();
!
str
.
Contains
(
eStr
,
"one"
)
&&
!
str
.
Contains
(
eStr
,
"two"
)
{
t
.
Fatal
(
"Expected error messages not included"
)
}
}
func
TestShortBufferError
(
t
*
testing
.
T
)
{
buf
:=
bytes
.
NewBuffer
(
nil
)
writer
:=
NewWriter
(
buf
)
reader
:=
NewReader
(
buf
)
SubtestReadShortBuffer
(
t
,
writer
,
reader
)
}
func
SubtestReadWrite
(
t
*
testing
.
T
,
writer
WriteCloser
,
reader
ReadCloser
)
{
msgs
:=
[
1000
][]
byte
{}
...
...
@@ -240,7 +281,47 @@ func SubtestWriteClose(t *testing.T, writer WriteCloser, reader ReadCloser) {
}()
n
,
err
:=
writer
.
Write
(
buf
[
:
])
if
n
!=
0
||
err
==
nil
{
t
.
Error
(
"expected to
read
nothing"
)
t
.
Error
(
"expected to
write
nothing"
)
}
<-
done
}
func
SubtestReaderWriterClose
(
t
*
testing
.
T
,
rw
ReadWriteCloser
)
{
buf
:=
[
10
]
byte
{}
done
:=
make
(
chan
struct
{})
go
func
()
{
defer
close
(
done
)
time
.
Sleep
(
10
*
time
.
Millisecond
)
buf
:=
[
10
]
byte
{}
rw
.
Read
(
buf
[
:
])
rw
.
Close
()
}()
n
,
err
:=
rw
.
Write
(
buf
[
:
])
if
n
!=
10
||
err
!=
nil
{
t
.
Error
(
"Expected to write 10 bytes"
)
}
<-
done
}
func
SubtestReadShortBuffer
(
t
*
testing
.
T
,
writer
WriteCloser
,
reader
ReadCloser
)
{
defer
reader
.
Close
()
shortReadBuf
:=
[
1
]
byte
{}
done
:=
make
(
chan
struct
{})
go
func
()
{
defer
writer
.
Close
()
defer
close
(
done
)
time
.
Sleep
(
10
*
time
.
Millisecond
)
largeWriteBuf
:=
[
10
]
byte
{}
writer
.
Write
(
largeWriteBuf
[
:
])
}()
<-
done
n
,
_
:=
reader
.
NextMsgLen
()
if
n
!=
10
{
t
.
Fatal
(
"Expected next message to have length of 10"
)
}
_
,
err
:=
reader
.
Read
(
shortReadBuf
[
:
])
if
err
!=
io
.
ErrShortBuffer
{
t
.
Fatal
(
"Expected short buffer error"
)
}
}
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