/*
DESCRIPTION
  jpeg_test.go provides testing for utilities found in jpeg.go.

AUTHOR
  Saxon Nelson-Milton <saxon@ausocean.org>

LICENSE
  Copyright (C) 2020 the Australian Ocean Lab (AusOcean)

  It is free software: you can redistribute it and/or modify them
  under the terms of the GNU General Public License as published by the
  Free Software Foundation, either version 3 of the License, or (at your
  option) any later version.

  It is distributed in the hope that it will be useful, but WITHOUT
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  for more details.

  You should have received a copy of the GNU General Public License
  along with revid in gpl.txt. If not, see http://www.gnu.org/licenses.
*/

package mjpeg

import (
	"bytes"
	"io/ioutil"
	"testing"

	"bitbucket.org/ausocean/av/protocol/rtp"
)

func TestParsePayload(t *testing.T) {
	const (
		wantPath = "testdata/expect.mjpeg"
		noOfPkts = 5629
	)

	got := &bytes.Buffer{}
	c := NewContext(got)

	for i, pkt := range testPackets {
		p, err := rtp.Payload(pkt)
		if err != nil {
			t.Fatalf("could not get payload for packet %d: %v", i, err)
		}

		m, err := rtp.Marker(pkt)
		if err != nil {
			t.Fatalf("could not get marker for packet %d: %v", i, err)
		}

		err = c.ParsePayload(p, m)
		if err != nil {
			t.Fatalf("could not parse pyload for packet %d: %v", i, err)
		}
	}

	want, err := ioutil.ReadFile(wantPath)
	if err != nil {
		t.Fatalf("could not read file for wanted MJPEG data: %v", err)
	}

	if !bytes.Equal(got.Bytes(), want) {
		t.Error("did not get expected result")
	}
}