public void create_assembly_info_replaces_tokens(IAssemblyInfoWriter assemblyInfoWriter, MockFileManager fileManager) { "Given I have a file manager" ._(() => fileManager = new MockFileManager()); "And I have an assembly info writer" ._(() => assemblyInfoWriter = new AssemblyInfoWriter(fileManager)); "When I call create" ._(() => assemblyInfoWriter.Create(@"c:/dev/sallyfx/properties/AssemblyInfo.cs", "SallyFx", "SallyFx is a new generation web server", "0.0.2", "0.0.2/f1214 x64", "0.0.2.1")); "It should replace the title token" ._(() => fileManager.Output.Should().Contain("[assembly: AssemblyTitleAttribute(\"SallyFx\")]")); "It should replace the description token" ._(() => fileManager.Output.Should().Contain("[assembly: AssemblyDescriptionAttribute(\"SallyFx is a new generation web server\")]")); "It should replace the version token" ._(() => fileManager.Output.Should().Contain("[assembly: AssemblyVersionAttribute(\"0.0.2\")]")); "It should replace the informational version token" ._(() => fileManager.Output.Should().Contain("[assembly: AssemblyInformationalVersionAttribute(\"0.0.2/f1214 x64\")]")); "It should replace the file version token" ._(() => fileManager.Output.Should().Contain("[assembly: AssemblyFileVersionAttribute(\"0.0.2.1\")]")); }
public async Task TestApplyDelete() { var setting = new Setting() { Name = "configuration", HandlerDescription = new FilesSettingHandlerDescription(@"C:\test\settings", new string[] { @"test1.ini", @"test2.ini", @"subfolder\test1.ini" }) }; var logging = new LoggerFactory(); var logger = logging.CreateLogger <FilesSettingHandler>(); var fileManager = new MockFileManager(); fileManager.CreateDirectory(@"C:\test\settings"); fileManager.CreateDirectory(@"C:\test\settings\subfolder"); await fileManager.WriteAllBytes(@"C:\test\settings\test1.ini", new byte[] { 0x00, 0x01, 0x02, 0x03 }); await fileManager.WriteAllBytes(@"C:\test\settings\test2.ini", new byte[] { 0x01, 0x01, 0x01, 0x01 }); await fileManager.WriteAllBytes(@"C:\test\settings\subfolder\test1.ini", new byte[] { 0x10, 0x11, 0x12, 0x13 }); var handler = new FilesSettingHandler(setting, fileManager, logger); var value = new FilesValue() { Files = new FileValue[] { new FileValue { RelativePath = @"test2.ini", Contents = new byte[] { 0x02, 0x02, 0x02 } } } }.ToDictionary(); var exists = fileManager.Exists(@"C:\test\settings\test1.ini"); Assert.True(exists); exists = fileManager.Exists(@"C:\test\settings\subfolder\test1.ini"); Assert.True(exists); var success = await handler.Apply(value); Assert.True(success); exists = fileManager.Exists(@"C:\test\settings\test1.ini"); Assert.False(exists); var contents = await fileManager.ReadAllBytes(@"C:\test\settings\test2.ini"); Assert.Equal(3, contents.Length); Assert.Equal(0x02, contents[0]); Assert.Equal(0x02, contents[1]); Assert.Equal(0x02, contents[2]); exists = fileManager.Exists(@"C:\test\settings\subfolder\test1.ini"); Assert.False(exists); }
private static Autarkysoft.Bitcoin.Blockchain.Blockchain GetChain() { var c = new Consensus(); var fman = new MockFileManager() { expReadFN = "Headers", returnReadData = BlockHeaderTests.GetSampleBlockHeaderBytes(), blockInfo = new byte[32 + 4 + 4] }; return(GetChain(fman, new BlockVerifier(null, c), c)); }
public void patch_updates_assembly_info(IAssemblyInfoWriter assemblyInfoWriter, AssemblyInfo assemblyInfo, MockFileManager fileManager) { string path = Path.Combine("c:" + System.IO.Path.DirectorySeparatorChar, "dev", "sallyfx", "properties", "AssemblyInfo.cs"); "Given I have a file manager" ._(() => fileManager = new MockFileManager()); "And I have an assembly info writer" ._(() => assemblyInfoWriter = new AssemblyInfoWriter(fileManager)); "And I have an assembly info on disk" ._(() => A.CallTo(() => fileManager.UnderlyingFake.ReadAllText(path)).Returns(Crane.Core.Properties.Resources.AssemblyInfoTemplate)); "And I have a data to patch the assembly info file with" ._(() => assemblyInfo = new AssemblyInfo() { Title = "Norman.Chat", Description = "Norman is a chat bot", FileVersion = new Version(0, 0, 3, 1), Version = new Version(0, 0, 3, 0), InformationalVersion = "RELEASE", RootDirectory = Path.Combine("c:" + System.IO.Path.DirectorySeparatorChar, "dev", "sallyfx"), Include = Path.Combine("properties", "AssemblyInfo.cs") }); "When I patch the assembly" ._(() => assemblyInfoWriter.Patch(assemblyInfo)); "It should replace the title token" ._(() => fileManager.Output.Should().Contain("[assembly: AssemblyTitleAttribute(\"Norman.Chat\")]")); "It should replace the description token" ._(() => fileManager.Output.Should().Contain("[assembly: AssemblyDescriptionAttribute(\"Norman is a chat bot\")]")); "It should replace the version token" ._(() => fileManager.Output.Should().Contain("[assembly: AssemblyVersionAttribute(\"0.0.3.0\")]")); "It should replace the informational version token" ._(() => fileManager.Output.Should().Contain("[assembly: AssemblyInformationalVersionAttribute(\"RELEASE\")]")); "It should replace the file version token" ._(() => fileManager.Output.Should().Contain("[assembly: AssemblyFileVersionAttribute(\"0.0.3.1\")]")); }
public async Task TestCaptureMissingFolder() { var setting = new Setting() { Name = "configuration", HandlerDescription = new FilesSettingHandlerDescription(@"C:\test\settings", new string[] { @"test1.ini", @"test2.ini", @"subfolder\test1.ini" }) }; var logging = new LoggerFactory(); var logger = logging.CreateLogger <FilesSettingHandler>(); var fileManager = new MockFileManager(); var handler = new FilesSettingHandler(setting, fileManager, logger); var result = await handler.Capture(); Assert.False(result.Success); }
public async Task TestCaptureWildcards() { var setting = new Setting() { Name = "configuration", HandlerDescription = new FilesSettingHandlerDescription(@"C:\test\settings", new string[] { @"*", }) }; var logging = new LoggerFactory(); var logger = logging.CreateLogger <FilesSettingHandler>(); var fileManager = new MockFileManager(); fileManager.CreateDirectory(@"C:\test\settings"); fileManager.CreateDirectory(@"C:\test\settings\subfolder"); await fileManager.WriteAllBytes(@"C:\test\settings\test1.ini", new byte[] { 0x00, 0x01, 0x02, 0x03 }); await fileManager.WriteAllBytes(@"C:\test\settings\test2.ini", new byte[] { 0x01, 0x01, 0x01, 0x01 }); await fileManager.WriteAllBytes(@"C:\test\settings\subfolder\test1.ini", new byte[] { 0x10, 0x11, 0x12, 0x13 }); var handler = new FilesSettingHandler(setting, fileManager, logger); var result = await handler.Capture(); Assert.True(result.Success); Assert.IsType <Dictionary <string, object> >(result.Value); var dictionaryValue = (Dictionary <string, object>)result.Value; Assert.True(dictionaryValue.TryGetValue("files", out var filesObject)); Assert.IsType <Dictionary <string, object>[]>(filesObject); var filesArray = (Dictionary <string, object>[])filesObject; Assert.Equal(2, filesArray.Length); Assert.IsType <Dictionary <string, object> >(filesArray[0]); var fileDictionary = (Dictionary <string, object>)filesArray[0]; Assert.True(fileDictionary.TryGetValue("relative_path", out var relativePathObject)); Assert.IsType <string>(relativePathObject); Assert.Equal(@"test1.ini", (string)relativePathObject); Assert.True(fileDictionary.TryGetValue("b64gzip", out var b64gzip)); Assert.IsType <string>(b64gzip); var contents = Decode((string)b64gzip); Assert.Equal(4, contents.Length); Assert.Equal(0x00, contents[0]); Assert.Equal(0x01, contents[1]); Assert.Equal(0x02, contents[2]); Assert.Equal(0x03, contents[3]); Assert.IsType <Dictionary <string, object> >(filesArray[1]); fileDictionary = (Dictionary <string, object>)filesArray[1]; Assert.True(fileDictionary.TryGetValue("relative_path", out relativePathObject)); Assert.IsType <string>(relativePathObject); Assert.Equal(@"test2.ini", (string)relativePathObject); Assert.True(fileDictionary.TryGetValue("b64gzip", out b64gzip)); Assert.IsType <string>(b64gzip); contents = Decode((string)b64gzip); Assert.Equal(4, contents.Length); Assert.Equal(0x01, contents[0]); Assert.Equal(0x01, contents[1]); Assert.Equal(0x01, contents[2]); Assert.Equal(0x01, contents[3]); setting = new Setting() { Name = "configuration", HandlerDescription = new FilesSettingHandlerDescription(@"C:\test\settings", new string[] { @"*.ini", @"subfolder\test*" }) }; logging = new LoggerFactory(); logger = logging.CreateLogger <FilesSettingHandler>(); fileManager = new MockFileManager(); fileManager.CreateDirectory(@"C:\test\settings"); fileManager.CreateDirectory(@"C:\test\settings\subfolder"); await fileManager.WriteAllBytes(@"C:\test\settings\test1.ini", new byte[] { 0x00, 0x01, 0x02, 0x03 }); await fileManager.WriteAllBytes(@"C:\test\settings\test2.ini", new byte[] { 0x01, 0x01, 0x01, 0x01 }); await fileManager.WriteAllBytes(@"C:\test\settings\test.xyz", new byte[] { 0x01, 0x01, 0x01, 0x01 }); await fileManager.WriteAllBytes(@"C:\test\settings\subfolder\test1.ini", new byte[] { 0x10, 0x11, 0x12, 0x13 }); await fileManager.WriteAllBytes(@"C:\test\settings\nottest.xyz", new byte[] { 0x01, 0x01, 0x01, 0x01 }); handler = new FilesSettingHandler(setting, fileManager, logger); result = await handler.Capture(); Assert.True(result.Success); Assert.IsType <Dictionary <string, object> >(result.Value); dictionaryValue = (Dictionary <string, object>)result.Value; Assert.True(dictionaryValue.TryGetValue("files", out filesObject)); Assert.IsType <Dictionary <string, object>[]>(filesObject); filesArray = (Dictionary <string, object>[])filesObject; Assert.Equal(3, filesArray.Length); Assert.IsType <Dictionary <string, object> >(filesArray[0]); fileDictionary = (Dictionary <string, object>)filesArray[0]; Assert.True(fileDictionary.TryGetValue("relative_path", out relativePathObject)); Assert.IsType <string>(relativePathObject); Assert.Equal(@"test1.ini", (string)relativePathObject); Assert.True(fileDictionary.TryGetValue("b64gzip", out b64gzip)); Assert.IsType <string>(b64gzip); contents = Decode((string)b64gzip); Assert.Equal(4, contents.Length); Assert.Equal(0x00, contents[0]); Assert.Equal(0x01, contents[1]); Assert.Equal(0x02, contents[2]); Assert.Equal(0x03, contents[3]); Assert.IsType <Dictionary <string, object> >(filesArray[1]); fileDictionary = (Dictionary <string, object>)filesArray[1]; Assert.True(fileDictionary.TryGetValue("relative_path", out relativePathObject)); Assert.IsType <string>(relativePathObject); Assert.Equal(@"test2.ini", (string)relativePathObject); Assert.True(fileDictionary.TryGetValue("b64gzip", out b64gzip)); Assert.IsType <string>(b64gzip); contents = Decode((string)b64gzip); Assert.Equal(4, contents.Length); Assert.Equal(0x01, contents[0]); Assert.Equal(0x01, contents[1]); Assert.Equal(0x01, contents[2]); Assert.Equal(0x01, contents[3]); Assert.IsType <Dictionary <string, object> >(filesArray[2]); fileDictionary = (Dictionary <string, object>)filesArray[2]; Assert.True(fileDictionary.TryGetValue("relative_path", out relativePathObject)); Assert.IsType <string>(relativePathObject); Assert.Equal(@"subfolder\test1.ini", (string)relativePathObject); Assert.True(fileDictionary.TryGetValue("b64gzip", out b64gzip)); Assert.IsType <string>(b64gzip); contents = Decode((string)b64gzip); Assert.Equal(4, contents.Length); Assert.Equal(0x10, contents[0]); Assert.Equal(0x11, contents[1]); Assert.Equal(0x12, contents[2]); Assert.Equal(0x13, contents[3]); }
public static IEnumerable <object[]> GetLocatorCases() { var fman = new MockFileManager() { expReadFN = "Headers", returnReadData = BlockHeaderTests.GetSampleBlockHeaderBytes(), blockInfo = new byte[32 + 4 + 4] }; var consensus = new MockConsensus(); var bver = new BlockVerifier(null, consensus); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(1), GetHeaders(1) }); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(2), GetHeaders(2).Reverse() }); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(10), GetHeaders(10).Reverse() }); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(11), GetHeaders(11).Reverse() }); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(12), GetHeaders(12).Reverse() }); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(13), new BlockHeader[12] { new BlockHeader(12, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(11, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(10, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(9, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(8, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(7, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(6, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(5, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(4, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(3, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(2, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(0, new byte[32], new byte[32], 0, 0, 0), } }); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(14), new BlockHeader[13] { new BlockHeader(13, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(12, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(11, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(10, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(9, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(8, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(7, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(6, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(5, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(4, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(3, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(1, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(0, new byte[32], new byte[32], 0, 0, 0), } }); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(15), new BlockHeader[13] { new BlockHeader(14, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(13, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(12, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(11, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(10, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(9, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(8, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(7, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(6, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(5, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(4, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(2, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(0, new byte[32], new byte[32], 0, 0, 0), } }); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(16), new BlockHeader[13] { new BlockHeader(15, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(14, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(13, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(12, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(11, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(10, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(9, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(8, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(7, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(6, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(5, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(3, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(0, new byte[32], new byte[32], 0, 0, 0), } }); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(17), new BlockHeader[13] { new BlockHeader(16, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(15, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(14, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(13, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(12, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(11, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(10, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(9, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(8, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(7, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(6, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(4, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(0, new byte[32], new byte[32], 0, 0, 0), } }); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(18), new BlockHeader[14] { new BlockHeader(17, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(16, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(15, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(14, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(13, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(12, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(11, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(10, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(9, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(8, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(7, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(5, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(1, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(0, new byte[32], new byte[32], 0, 0, 0), } }); yield return(new object[] { GetChain(fman, bver, consensus), GetHeaders(19), new BlockHeader[14] { new BlockHeader(18, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(17, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(16, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(15, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(14, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(13, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(12, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(11, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(10, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(9, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(8, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(6, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(2, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(0, new byte[32], new byte[32], 0, 0, 0), } }); yield return(new object[] { GetChain(fman, bver, consensus), new BlockHeader[19] { new BlockHeader(0, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(1, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(2, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(3, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(4, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(5, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(6, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(7, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(8, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(9, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(10, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(11, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(12, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(13, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(14, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(15, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(16, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(17, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(18, new byte[32], new byte[32], (uint)UnixTimeStamp.TimeToEpoch(DateTime.Now.Subtract(TimeSpan.FromHours(1))), 0, 0), }, new BlockHeader[14] { // Last block (18) is not included new BlockHeader(17, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(16, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(15, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(14, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(13, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(12, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(11, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(10, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(9, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(8, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(7, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(5, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(1, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(0, new byte[32], new byte[32], 0, 0, 0), } }); uint yesterday = (uint)UnixTimeStamp.TimeToEpoch(DateTime.UtcNow.Subtract(TimeSpan.FromHours(25))); yield return(new object[] { GetChain(fman, bver, consensus), new BlockHeader[19] { new BlockHeader(0, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(1, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(2, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(3, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(4, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(5, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(6, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(7, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(8, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(9, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(10, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(11, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(12, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(13, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(14, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(15, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(16, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(17, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(18, new byte[32], new byte[32], yesterday, 0, 0), }, new BlockHeader[14] { new BlockHeader(18, new byte[32], new byte[32], yesterday, 0, 0), new BlockHeader(17, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(16, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(15, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(14, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(13, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(12, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(11, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(10, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(9, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(8, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(6, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(2, new byte[32], new byte[32], 0, 0, 0), new BlockHeader(0, new byte[32], new byte[32], 0, 0, 0), } }); }