{
  Solutions to the Advent Of Code.
  Copyright (C) 2023  Stefan Müller

  This program is free software: you can redistribute it and/or modify it 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.

  This program 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
  this program.  If not, see <http://www.gnu.org/licenses/>.
}

unit UScratchcardsTestCases;

{$mode ObjFPC}{$H+}

interface

uses
  Classes, SysUtils, fpcunit, testregistry, USolver, UBaseTestCases, UScratchcards;

type

  { TScratchcardsExampleTestCase }

  TScratchcardsExampleTestCase = class(TExampleEngineBaseTest)
  protected
    function CreateSolver: ISolver; override;
  published
    procedure TestPart1;
    procedure TestPart2;
  end;

implementation

{ TScratchcardsExampleTestCase }

function TScratchcardsExampleTestCase.CreateSolver: ISolver;
begin
  Result := TScratchcards.Create;
end;

procedure TScratchcardsExampleTestCase.TestPart1;
begin
  AssertEquals(13, FSolver.GetResultPart1);
end;

procedure TScratchcardsExampleTestCase.TestPart2;
begin
  AssertEquals(30, FSolver.GetResultPart2);
end;

initialization

  RegisterTest('TScratchcards', TScratchcardsExampleTestCase);
end.