-
Notifications
You must be signed in to change notification settings - Fork 8
Mapping collections
edpollitt edited this page Jul 28, 2015
·
7 revisions
Mapping enumerables, lists, collections, arrays...
<configuration>
<configSections>
<section name="collectionsConfiguration"
type="Nerdle.AutoConfig.Section, Nerdle.AutoConfig" />
</configSections>
<collectionsConfiguration>
<primes>
<prime>2</prime>
<prime>3</prime>
<prime>5</prime>
<prime>7</prime>
</primes>
<colors>
<color>Red</color>
<color>Green</color>
</colors>
<unicorns>
</unicorns>
<eggs>
<style>fried</style>
<style>scrambled</style>
<style>poached</style>
</eggs>
</collectionsConfiguration>
</configuration>public interface ICollectionsConfiguration
{
IEnumerable<long> Primes { get; }
IList<ConsoleColor> Colors { get; }
ICollection<string> Unicorns { get; }
string[] Eggs { get; }
}[Test]
public void Mapping_collections()
{
var config = AutoConfig.Map<ICollectionsConfiguration>();
config.Should().NotBeNull();
config.Primes.Should().HaveCount(4);
config.Primes.Should().ContainInOrder(2L, 3L, 5L, 7L);
config.Colors.Should().HaveCount(2);
config.Colors.Should().ContainInOrder(ConsoleColor.Red, ConsoleColor.G
config.Unicorns.Should().BeEmpty();
config.Eggs.Should().HaveCount(3);
config.Eggs.Should().ContainInOrder("fried", "scrambled", "poached");
}Mapping nested collections
<configuration>
<configSections>
<section name="nestedCollectionsConfiguration"
type="Nerdle.AutoConfig.Section, Nerdle.AutoConfig" />
</configSections>
<nestedCollectionsConfiguration>
<numbers>
<odds>
<number>1</number>
<number>3</number>
<number>5</number>
</odds>
<evens>
<number>2</number>
<number>4</number>
</evens>
</numbers>
</nestedCollectionsConfiguration>
</configuration>public interface INestedCollectionsConfiguration
{
IEnumerable<ICollection<int>> Numbers { get; }
}[Test]
public void Mapping_nested_collections()
{
var config = AutoConfig.Map<INestedCollectionsConfiguration>();
config.Should().NotBeNull();
config.Numbers.Should().HaveCount(2);
config.Numbers.First().Should().ContainInOrder(1, 3, 5);
config.Numbers.Last().Should().ContainInOrder(2, 4);
}