package problem999

import "testing"

type testType struct {
	in   [][]byte
	want int
}

func TestNumRookCaptures(t *testing.T) {
	tests := [...]testType{
		{
			in: [][]byte{
				{'.', '.', '.', '.', '.', '.', '.', '.'},
				{'.', '.', '.', 'p', '.', '.', '.', '.'},
				{'.', '.', '.', 'R', '.', '.', '.', 'p'},
				{'.', '.', '.', '.', '.', '.', '.', '.'},
				{'.', '.', '.', '.', '.', '.', '.', '.'},
				{'.', '.', '.', 'p', '.', '.', '.', '.'},
				{'.', '.', '.', '.', '.', '.', '.', '.'},
				{'.', '.', '.', '.', '.', '.', '.', '.'},
			},
			want: 3,
		},
		{
			in: [][]byte{
				{'.', '.', '.', '.', '.', '.', '.', '.'},
				{'.', 'p', 'p', 'p', 'p', 'p', '.', '.'},
				{'.', 'p', 'p', 'B', 'p', 'p', '.', '.'},
				{'.', 'p', 'B', 'R', 'B', 'p', '.', '.'},
				{'.', 'p', 'p', 'B', 'p', 'p', '.', '.'},
				{'.', 'p', 'p', 'p', 'p', 'p', '.', '.'},
				{'.', '.', '.', '.', '.', '.', '.', '.'},
				{'.', '.', '.', '.', '.', '.', '.', '.'},
			},
			want: 0,
		},
		{
			in: [][]byte{
				{'.', '.', '.', '.', '.', '.', '.', '.'},
				{'.', '.', '.', 'p', '.', '.', '.', '.'},
				{'.', '.', '.', 'p', '.', '.', '.', '.'},
				{'p', 'p', '.', 'R', '.', 'p', 'B', '.'},
				{'.', '.', '.', '.', '.', '.', '.', '.'},
				{'.', '.', '.', 'B', '.', '.', '.', '.'},
				{'.', '.', '.', 'p', '.', '.', '.', '.'},
				{'.', '.', '.', '.', '.', '.', '.', '.'},
			},
			want: 3,
		},
		{
			in: [][]byte{
				{'.', '.', '.', '.', '.', '.', '.', '.'},
				{'.', '.', '.', 'p', '.', '.', '.', '.'},
				{'.', '.', '.', 'p', '.', '.', '.', '.'},
				{'p', 'B', '.', 'R', '.', 'p', 'B', '.'},
				{'.', '.', '.', '.', '.', '.', '.', '.'},
				{'.', '.', '.', '.', '.', '.', '.', '.'},
				{'.', '.', 'p', '.', 'p', '.', '.', '.'},
				{'.', '.', '.', '.', '.', '.', '.', '.'},
			},
			want: 2,
		},
	}
	for _, tt := range tests {
		got := numRookCaptures(tt.in)
		if got != tt.want {
			t.Fatalf("in: %v, got: %v, want: %v", tt.in, got, tt.want)
		}
	}
}
