import { Matrix } from "./matrix";

describe("Matrix", () => {
  it("extract row from one number matrix", () => {
    const expected = [1];
    expect(new Matrix("1").rows[0]).toEqual(expected);
  });

  it("can extract row", () => {
    const expected = [3, 4];
    expect(new Matrix("1 2\n3 4").rows[1]).toEqual(expected);
  });

  it("extract row where numbers have different widths", () => {
    const expected = [10, 20];
    expect(new Matrix("1 2\n10 20").rows[1]).toEqual(expected);
  });

  it("can extract row from non-square matrix", () => {
    const expected = [7, 8, 9];
    expect(new Matrix("1 2 3\n4 5 6\n7 8 9\n8 7 6").rows[2]).toEqual(expected);
  });

  it("extract column from one number matrix", () => {
    const expected = [1];
    expect(new Matrix("1").columns[0]).toEqual(expected);
  });

  it("can extract column", () => {
    const expected = [3, 6, 9];
    expect(new Matrix("1 2 3\n4 5 6\n7 8 9").columns[2]).toEqual(expected);
  });

  it("can extract column from non-square matrix", () => {
    const expected = [3, 6, 9, 6];
    expect(new Matrix("1 2 3\n4 5 6\n7 8 9\n8 7 6").columns[2]).toEqual(
      expected
    );
  });

  it("extract column where numbers have different widths", () => {
    const expected = [1903, 3, 4];
    expect(new Matrix("89 1903 3\n18 3 1\n9 4 800").columns[1]).toEqual(
      expected
    );
  });
});
