Append config test

pull/4/head
Ogoun 2 years ago
parent 479ef9152f
commit 48f3916af0

@ -1,9 +1,31 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Xunit; using Xunit;
using ZeroLevel.Services.Config;
namespace ZeroLevel.UnitTests namespace ZeroLevel.UnitTests
{ {
public class Address
{
public string Host { get; set; }
public int Port { get; set; }
}
public class AddressParser
: IConfigRecordParser
{
public object Parse(string line)
{
var parts = line.Split(';').Where(part => string.IsNullOrWhiteSpace(part) == false).ToArray();
var addresses = new Address[parts.Length];
for (int i = 0; i < parts.Length; i++)
{
var hp = parts[i].Trim().Split(':');
addresses[i] = new Address { Host = hp[0], Port = int.Parse(hp[1]) };
}
return addresses;
}
}
public class AppConfig public class AppConfig
{ {
public string Url; public string Url;
@ -12,6 +34,8 @@ namespace ZeroLevel.UnitTests
public int[] Port; public int[] Port;
public ServiceConfig Service; public ServiceConfig Service;
public IEnumerable<int> List; public IEnumerable<int> List;
[ConfigRecordParse(typeof(AddressParser))]
public Address[] Hosts;
} }
public class ServiceConfig public class ServiceConfig
@ -22,6 +46,8 @@ namespace ZeroLevel.UnitTests
public string ServiceType; public string ServiceType;
} }
public class ConfigurationTest public class ConfigurationTest
{ {
[Fact] [Fact]
@ -38,6 +64,8 @@ namespace ZeroLevel.UnitTests
set.Default.Append("port", "90"); set.Default.Append("port", "90");
set.Default.Append("port", "8800"); set.Default.Append("port", "8800");
set.Default.Append("list", "1-5,7,9"); set.Default.Append("list", "1-5,7,9");
set.Default.Append("hosts", "host1:8800;host2:122;host3:1744");
var section = set.CreateSection("service"); var section = set.CreateSection("service");
section.Append("AppName", "TestApp"); section.Append("AppName", "TestApp");
section.Append("AppKey", "test.app"); section.Append("AppKey", "test.app");

@ -123,7 +123,6 @@ namespace ZeroLevel.Services.Collections
public IEnumerable<T> Dump() public IEnumerable<T> Dump()
{ {
var dump = new List<T>();
lock (_accessLocker) lock (_accessLocker)
{ {
var cursor = _startIndex; var cursor = _startIndex;
@ -131,12 +130,11 @@ namespace ZeroLevel.Services.Collections
{ {
do do
{ {
dump.Add(_array[cursor]); yield return _array[cursor];
cursor = (cursor + 1) % _array.Length; cursor = (cursor + 1) % _array.Length;
} while (cursor != _nextIndex); } while (cursor != _nextIndex);
} }
} }
return dump;
} }
} }
} }
Loading…
Cancel
Save

Powered by TurnKey Linux.