// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package impl

import (
	"bytes"
	"compress/gzip"
	"io"
	"math"
	"strings"
	"testing"
)

func TestCompressGZIP(t *testing.T) {
	tests := []string{
		"",
		"a",
		"ab",
		"abc",
		strings.Repeat("a", math.MaxUint16-1),
		strings.Repeat("b", math.MaxUint16),
		strings.Repeat("c", math.MaxUint16+1),
		strings.Repeat("abcdefghijklmnopqrstuvwxyz", math.MaxUint16-13),
	}
	for _, want := range tests {
		rb := bytes.NewReader(Export{}.CompressGZIP([]byte(want)))
		zr, err := gzip.NewReader(rb)
		if err != nil {
			t.Errorf("unexpected gzip.NewReader error: %v", err)
		}
		b, err := io.ReadAll(zr)
		if err != nil {
			t.Errorf("unexpected ioutil.ReadAll error: %v", err)
		}
		if got := string(b); got != want {
			t.Errorf("output mismatch: got %q, want %q", got, want)
		}
	}
}
