| // Licensed to the Apache Software Foundation(ASF) under one |
| // or more contributor license agreements.See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership.The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| unit DataFactory; |
| |
| interface |
| |
| uses |
| SysUtils, |
| Thrift.Collections, |
| Thrift.Test; |
| |
| type |
| TestDataFactory = class |
| strict protected |
| class function CreateSetField(const count : Integer) : IHashSet< IInsanity>; static; |
| class function CreateInsanity(const count : Integer) : IInsanity; static; |
| class function CreateBytesArray(const count : Integer) : TBytes; static; |
| class function CreateXtructs(const count : Integer) : IThriftList< IXtruct>; static; |
| class function CreateXtruct(const count : Integer) : IXtruct; static; |
| class function CreateListField(const count : Integer) : IThriftList< IThriftDictionary< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>>; static; |
| class function CreateUserMap(const count : Integer) : IThriftDictionary< TNumberz, Int64>; static; |
| class function CreateListFieldData(const count : Integer) : IThriftDictionary< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>; static; |
| class function CreateIntHashSet(const count : Integer) : IHashSet< Integer>; static; |
| class function CreateListFieldDataDict(const count : Integer) : IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>; static; |
| class function CreateListFieldDataDictValue(const count : Integer) : IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>; static; |
| class function CreateListFieldDataDictValueList(const count : Integer) : IThriftList< IThriftDictionary< IInsanity, string>>; static; |
| class function CreateListFieldDataDictValueListDict(const count : Integer) : IThriftDictionary< IInsanity, string>; static; |
| public |
| class function CreateCrazyNesting(const count : Integer = 10) : ICrazyNesting; static; |
| end; |
| |
| implementation |
| |
| |
| class function TestDataFactory.CreateCrazyNesting(const count : Integer = 10) : ICrazyNesting; |
| begin |
| if (count <= 0) |
| then Exit(nil); |
| |
| result := TCrazyNestingImpl.Create; |
| result.Binary_field := CreateBytesArray(count); |
| result.List_field := CreateListField(count); |
| result.Set_field := CreateSetField(count); |
| result.String_field := Format('data level %d', [count]); |
| end; |
| |
| class function TestDataFactory.CreateSetField(const count : Integer) : IHashSet< IInsanity>; |
| var i : Integer; |
| begin |
| result := THashSetImpl< IInsanity>.Create; |
| for i := 0 to count-1 do begin |
| result.Add(CreateInsanity(count)); |
| end; |
| end; |
| |
| class function TestDataFactory.CreateInsanity(const count : Integer) : IInsanity; |
| begin |
| result := TInsanityImpl.Create; |
| result.UserMap := CreateUserMap(count); |
| result.Xtructs := CreateXtructs(count); |
| end; |
| |
| class function TestDataFactory.CreateXtructs(const count : Integer) : IThriftList< IXtruct>; |
| var i : Integer; |
| begin |
| result := TThriftListImpl< IXtruct>.Create; |
| for i := 0 to count-1 do begin |
| result.Add(CreateXtruct(count)); |
| end; |
| end; |
| |
| class function TestDataFactory.CreateXtruct(const count : Integer) : IXtruct; |
| begin |
| result := TXtructImpl.Create; |
| result.Byte_thing := SmallInt(count mod 128); |
| result.I32_thing := count; |
| result.I64_thing := count; |
| result.String_thing := Format('data level %d', [count]); |
| end; |
| |
| class function TestDataFactory.CreateUserMap(const count : Integer) : IThriftDictionary< TNumberz, Int64>; |
| begin |
| result := TThriftDictionaryImpl< TNumberz, Int64>.Create; |
| result.Add(TNumberz.ONE, count); |
| result.Add(TNumberz.TWO, count); |
| result.Add(TNumberz.THREE, count); |
| result.Add(TNumberz.FIVE, count); |
| result.Add(TNumberz.SIX, count); |
| result.Add(TNumberz.EIGHT, count); |
| end; |
| |
| class function TestDataFactory.CreateListField(const count : Integer) : IThriftList< IThriftDictionary< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>>; |
| var i : Integer; |
| begin |
| result := TThriftListImpl< IThriftDictionary< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>>.Create; |
| for i := 0 to count-1 do begin |
| result.Add(CreateListFieldData(count)); |
| end; |
| end; |
| |
| class function TestDataFactory.CreateListFieldData(const count : Integer) : IThriftDictionary< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>; |
| var i : Integer; |
| begin |
| result := TThriftDictionaryImpl< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>.Create; |
| for i := 0 to count-1 do begin |
| result.Add( CreateIntHashSet(count), CreateListFieldDataDict(count)); |
| end; |
| end; |
| |
| class function TestDataFactory.CreateIntHashSet(const count : Integer) : IHashSet< Integer>; |
| var i : Integer; |
| begin |
| result := THashSetImpl< Integer>.Create; |
| for i := 0 to count-1 do begin |
| result.Add(i); |
| end; |
| end; |
| |
| class function TestDataFactory.CreateListFieldDataDict(const count : Integer) : IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>; |
| var i : Integer; |
| begin |
| result := TThriftDictionaryImpl< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>.Create; |
| for i := 0 to count-1 do begin |
| result.Add(i, CreateListFieldDataDictValue(count)); |
| end; |
| end; |
| |
| class function TestDataFactory.CreateListFieldDataDictValue(const count : Integer) : IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>; |
| var i : Integer; |
| begin |
| result := THashSetImpl< IThriftList< IThriftDictionary< IInsanity, string>>>.Create; |
| for i := 0 to count-1 do begin |
| result.Add( CreateListFieldDataDictValueList(count)); |
| end; |
| end; |
| |
| class function TestDataFactory.CreateListFieldDataDictValueList(const count : Integer) : IThriftList< IThriftDictionary< IInsanity, string>>; |
| var i : Integer; |
| begin |
| result := TThriftListImpl< IThriftDictionary< IInsanity, string>>.Create; |
| for i := 0 to count-1 do begin |
| result.Add(CreateListFieldDataDictValueListDict(count)); |
| end; |
| end; |
| |
| class function TestDataFactory.CreateListFieldDataDictValueListDict(const count : Integer) : IThriftDictionary< IInsanity, string>; |
| begin |
| result := TThriftDictionaryImpl< IInsanity, string>.Create; |
| result.Add(CreateInsanity(count), Format('data level %d', [count])); |
| end; |
| |
| class function TestDataFactory.CreateBytesArray(const count : Integer) : TBytes; |
| var i : Integer; |
| begin |
| SetLength( result, count); |
| for i := 0 to count-1 do begin |
| result[i] := i mod $FF; |
| end; |
| end; |
| |
| end. |
| |