mirror of
https://github.com/pion/mediadevices.git
synced 2025-09-27 21:02:17 +08:00
52 lines
1.7 KiB
Go
52 lines
1.7 KiB
Go
package frame
|
|
|
|
import (
|
|
"bytes"
|
|
"image/jpeg"
|
|
"testing"
|
|
)
|
|
|
|
func TestAddMotionDht(t *testing.T) {
|
|
uninitializedHuffmanTableFrame, err := jpeg.Decode(bytes.NewReader(UninitializedHuffmanTable))
|
|
|
|
// Decode fails with an uninitialized Huffman table error for sample input
|
|
expectedErrorMessage := "invalid JPEG format: uninitialized Huffman table"
|
|
if err.Error() != expectedErrorMessage {
|
|
t.Fatalf("Wrong decode error result,\nexpected:\n%+v\ngot:\n%+v", expectedErrorMessage, err)
|
|
}
|
|
|
|
// Decode passes after adding default Huffman table to
|
|
defaultHuffmanTableFrame, err := jpeg.Decode(bytes.NewReader(addMotionDht(UninitializedHuffmanTable)))
|
|
if err != nil {
|
|
t.Fatalf("Expected decode function to pass after adding default Huffman table. Failed with %v\n", err)
|
|
}
|
|
|
|
// Adding default Huffman table to a valid frame without a Huffman table changes the table
|
|
if uninitializedHuffmanTableFrame == defaultHuffmanTableFrame {
|
|
t.Fatalf("Expected addMotionDht to update frame. Instead returned original frame")
|
|
}
|
|
|
|
// Check that an improperly constructed frame does not get updated by addMotionDht
|
|
randomBytes := []byte{1, 2, 3, 4}
|
|
frame1, err := jpeg.Decode(bytes.NewReader(randomBytes))
|
|
if err == nil {
|
|
t.Fatalf("Expected decode function to fail with random bytes but passed.")
|
|
}
|
|
|
|
frame2, err := jpeg.Decode(bytes.NewReader(addMotionDht(randomBytes)))
|
|
if err == nil {
|
|
t.Fatalf("Expected decode function to fail with random bytes but passed.")
|
|
}
|
|
|
|
if frame1 != frame2 {
|
|
t.Fatalf("addMotionDht updated the frame despite being improperly constructed")
|
|
}
|
|
}
|
|
|
|
func TestDecodeMJPEG(t *testing.T) {
|
|
_, _, err := decodeMJPEG(UninitializedHuffmanTable, 640, 480)
|
|
if err != nil {
|
|
t.Fatalf("Expected decode function to pass. Failed with %v\n", err)
|
|
}
|
|
}
|