blob: 8dec3f303e4fadefa85ef2e887235b45f6969e4b [file] [log] [blame]
// 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.
using System;
using System.Collections.Generic;
using System.Text;
using ThriftTest;
using Thrift.Collections;
namespace Client.Tests
{
static class TestDataFactory
{
public static CrazyNesting? CreateCrazyNesting(int count = 10)
{
if (count <= 0)
return null;
return new CrazyNesting()
{
Binary_field = CreateBytesArray(count),
List_field = CreateListField(count),
Set_field = CreateSetField(count),
String_field = string.Format("data level {0}", count)
};
}
private static HashSet<Insanity> CreateSetField(int count)
{
var retval = new HashSet<Insanity>();
for (var i = 0; i < count; ++i)
retval.Add(CreateInsanity(count));
return retval;
}
private static Insanity CreateInsanity(int count)
{
return new Insanity()
{
UserMap = CreateUserMap(count),
Xtructs = CreateXtructs(count)
};
}
private static List<Xtruct> CreateXtructs(int count)
{
var retval = new List<Xtruct>();
for (var i = 0; i < count; ++i)
retval.Add(CreateXtruct(count));
return retval;
}
private static Xtruct CreateXtruct(int count)
{
return new Xtruct()
{
Byte_thing = (sbyte)(count % 128),
I32_thing = count,
I64_thing = count,
String_thing = string.Format("data level {0}", count)
};
}
private static Dictionary<Numberz, long> CreateUserMap(int count)
{
var retval = new Dictionary<Numberz, long>
{
{ Numberz.ONE, count },
{ Numberz.TWO, count },
{ Numberz.THREE, count },
{ Numberz.FIVE, count },
{ Numberz.SIX, count },
{ Numberz.EIGHT, count }
};
return retval;
}
private static List<Dictionary<HashSet<int>, Dictionary<int, HashSet<List<Dictionary<Insanity, string>>>>>> CreateListField(int count)
{
var retval = new List<Dictionary<HashSet<int>, Dictionary<int, HashSet<List<Dictionary<Insanity, string>>>>>>();
for (var i = 0; i < count; ++i)
retval.Add(CreateListFieldData(count));
return retval;
}
private static Dictionary<HashSet<int>, Dictionary<int, HashSet<List<Dictionary<Insanity, string>>>>> CreateListFieldData(int count)
{
var retval = new Dictionary<HashSet<int>, Dictionary<int, HashSet<List<Dictionary<Insanity, string>>>>>();
for (var i = 0; i < count; ++i)
retval.Add( CreateIntHashSet(count), CreateListFieldDataDict(count));
return retval;
}
private static HashSet<int> CreateIntHashSet(int count)
{
var retval = new HashSet<int>();
for (var i = 0; i < count; ++i)
retval.Add(i);
return retval;
}
private static Dictionary<int, HashSet<List<Dictionary<Insanity, string>>>> CreateListFieldDataDict(int count)
{
var retval = new Dictionary<int, HashSet<List<Dictionary<Insanity, string>>>>();
for (var i = 0; i < count; ++i)
retval.Add(i, CreateListFieldDataDictValue(count));
return retval;
}
private static HashSet<List<Dictionary<Insanity, string>>> CreateListFieldDataDictValue(int count)
{
var retval = new HashSet<List<Dictionary<Insanity, string>>>();
for (var i = 0; i < count; ++i)
retval.Add( CreateListFieldDataDictValueList(count));
return retval;
}
private static List<Dictionary<Insanity, string>> CreateListFieldDataDictValueList(int count)
{
var retval = new List<Dictionary<Insanity, string>>();
for (var i = 0; i < count; ++i)
retval.Add(CreateListFieldDataDictValueListDict(count));
return retval;
}
private static Dictionary<Insanity, string> CreateListFieldDataDictValueListDict(int count)
{
return new Dictionary<Insanity, string>
{
{ CreateInsanity(count), string.Format("data level {0}", count) }
};
}
private static byte[] CreateBytesArray(int count)
{
var retval = new byte[count];
for (var i = 0; i < count; ++i)
retval[i] = (byte)(i % 0xFF);
return retval;
}
}
}