GithubHelp home page GithubHelp logo

Comments (3)

staticcat avatar staticcat commented on August 18, 2024

You can use a CustomTestCaseSourceAttribute class to pass the data your looking to use. Its more complex then simply passing the value directly, but also allows way more control.

The following example is something I did were I needed to pass a large serialisation string.

AllCoreActions = class(CustomTestCaseSourceAttribute)
protected
  function GetCaseInfoArray : TestCaseInfoArray; override;
end;


function AllCoreActions.GetCaseInfoArray: TestCaseInfoArray;
var
  actionCategories : IList<IActionCategory>;
  catIndex : Integer;
  actionIndex : Integer;
  actionInfo: IActionInfo;
begin
  SetLength(Result, 0);

  //Get the list of things to test using your preferred method. 
  actionCategories := ActionService.GetCategoies;

  for catIndex := 0 to actionCategories.Count - 1 do
  begin
    for actionIndex := 0 to actionCategories[catIndex].ActionInfo.Count - 1 do
    begin
      actionInfo := actionCategories[catIndex].ActionInfo[actionIndex];

      //Extend the list of test case data, also set a name to reference this test data by.
      SetLength(Result, Succ(Length(Result)));
      Result[high(Result)].Name := actionInfo.ActionClassName;

      //Extend the list of params for this test data to the number of params for the test.
      SetLength(Result[high(Result)].Values, 1);
      Result[high(Result)].Values[0] := TValue.From<string>(actionInfo.Serialise);
    end;
  end;
end;

I can then run the test with a definition like so.

[Test, AllCoreActions]
procedure Can_Parse_With_Just_One_Action(const serialised : string);

from dunitx.

SirRufo avatar SirRufo commented on August 18, 2024

If I sucessfully use a string with more than 255 chars - what did I do wrong?

type
  [ TestFixture ]
  TFooAssemblerTest = class( TObject )
  private const
    FooData =
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234' +
    {} '1234512345123451234512345123451234512345123451234512345123451234';

    FooDTODataNone =
    {} 'eAEBAAr/9TEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUA'#$D#$A +
    {} 'MQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0'#$D#$A +
    {} 'ADUAMQAyADMANAA1ADEAMgAzADQAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMA'#$D#$A +
    {} 'NAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAy'#$D#$A +
    {} 'ADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAAxADIAMwA0ADUAMQAyADMANAA1ADEA'#$D#$A +
    {} 'MgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1'#$D#$A +
    {} 'ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADEAMgAzADQA'#$D#$A +
    {} 'NQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAz'#$D#$A +
    {} 'ADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEA'#$D#$A +
    {} 'MgAzADQAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAx'#$D#$A +
    {} 'ADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQA'#$D#$A +
    {} 'NQAxADIAMwA0ADUAMQAyADMANAAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0'#$D#$A +
    {} 'ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIA'#$D#$A +
    {} 'MwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADEAMgAzADQANQAxADIAMwA0ADUAMQAy'#$D#$A +
    {} 'ADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUA'#$D#$A +
    {} 'MQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQAMQAyADMANAA1'#$D#$A +
    {} 'ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMA'#$D#$A +
    {} 'NAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAy'#$D#$A +
    {} 'ADMANAAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEA'#$D#$A +
    {} 'MgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1'#$D#$A +
    {} 'ADEAMgAzADQANQAxADIAMwA0ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQA'#$D#$A +
    {} 'NQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAz'#$D#$A +
    {} 'ADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQAMQAyADMANAA1ADEAMgAzADQANQAxADIA'#$D#$A +
    {} 'MwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAx'#$D#$A +
    {} 'ADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAAxADIAMwA0ADUA'#$D#$A +
    {} 'MQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0'#$D#$A +
    {} 'ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIA'#$D#$A +
    {} 'MwA0ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAy'#$D#$A +
    {} 'ADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUA'#$D#$A +
    {} 'MQAyADMANAA1ADEAMgAzADQAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1'#$D#$A +
    {} 'ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMA'#$D#$A +
    {} 'NAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAz'#$D#$A +
    {} 'ADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEA'#$D#$A +
    {} 'MgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADEAMgAzADQANQAx'#$D#$A +
    {} 'ADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQA'#$D#$A +
    {} 'NQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAz'#$D#$A +
    {} 'ADQAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIA'#$D#$A +
    {} 'MwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAx'#$D#$A +
    {} 'ADIAMwA0ADUAMQAyADMANAAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUA'#$D#$A +
    {} 'MQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0'#$D#$A +
    {} 'ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMA'#$D#$A +
    {} 'NAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAy'#$D#$A +
    {} 'ADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQAMQAyADMANAA1ADEA'#$D#$A +
    {} 'MgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1'#$D#$A +
    {} 'ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMA'#$D#$A +
    {} 'NACBZf7Z';
    FooDTODataFastest =
    {} 'eAEzZDBiMGYwYTBlMBwQ1sDYivDtqP2j8T+a/kfzP6JEoC9rtPwZLX9Gy5/R8oe+pQ7CNgCBZf7Z'#$D#$A;
    FooDTODataDefault =
    {} 'eJztzTcBAAAIwLBaYvm3hgwO+uVLkBTNECe6Wf39/f39/f39//4LgWX+2Q==';
    FooDTODataMax =
    {} 'eNrtzTEBADAIxMBY+gL+rdUFLNluu/AomiEnir+/v7+/v7+//6o+gWX+2Q==';

  var
    FAssembler: TFooAssembler;
  public
    [ Setup ]
    procedure Setup;
    [ TearDown ]
    procedure TearDown;
    [ Test ]
    [ TestCase( 'None', 'zcNone,' + FooData + ',' + FooDTODataNone ) ]
    [ TestCase( 'Fastest', 'zcFastest,' + FooData + ',' + FooDTODataFastest ) ]
    [ TestCase( 'Default', 'zcDefault,' + FooData + ',' + FooDTODataDefault ) ]
    [ TestCase( 'Max', 'zcMax,' + FooData + ',' + FooDTODataMax ) ]
    procedure TestConvertFoo2FooDTO( CompressionLevel: TZCompressionLevel; const InData, OutData: string );
    [ Test ]
    [ TestCase( 'None', FooDTODataNone + ',' + FooData ) ]
    [ TestCase( 'Fastest', FooDTODataFastest + ',' + FooData ) ]
    [ TestCase( 'Default', FooDTODataNone + ',' + FooData ) ]
    [ TestCase( 'Max', FooDTODataNone + ',' + FooData ) ]
    procedure TestConvertFooDTO2Foo( const InData, OutData: string );
  end;

from dunitx.

baeckerg avatar baeckerg commented on August 18, 2024

Nothing at all - big THANK YOU for showing me the right direction

from dunitx.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.