public void It_renders_its_child_parts_only_once_if_name_evaluates_to_a_collection() { var a = new TestBlock("a", new LiteralText("b")); var writer = new StringWriter(); var context = new RenderContext(null, new { a = new[] { 1, 2, 3 } }, writer, null); a.Render(context); Assert.AreEqual("b", writer.GetStringBuilder().ToString()); }
public void It_supports_accessing_members_of_child_objects() { var a = new TestBlock("a.b", new LiteralText("c")); var writer = new StringWriter(); var context = new RenderContext(null, new { a = new { b = new[] { 1, 2, 3 } } }, writer, null); a.Render(context); Assert.AreEqual("c", writer.GetStringBuilder().ToString()); }
public void It_does_not_render_its_child_parts_if_name_evaluates_to_empty_string() { var a = new TestBlock("a", new LiteralText("b")); var writer = new StringWriter(); var context = new RenderContext(null, new { a = "" }, writer, null); a.Render(context); Assert.AreEqual("", writer.GetStringBuilder().ToString()); }
public void ShouldSyncBlockChainAgainstLocal() { var network = new TestNetwork(); network.AddSeed(new NetworkAddress(new IPEndPoint(IPAddress.Parse("192.168.2.101"), 9999))); var p = new TestTransactionPool(); p.Add("t1", 1); p.Add("t2", 0); p.Spend("t2", "t1", 0); p.Render(); var genesisBlock = new TestBlock(p.TakeOut("t1").Value); var block1 = new TestBlock(p.TakeOut("t2").Value); block1.Parent = genesisBlock; genesisBlock.Render(); block1.Render(); WithBlockChains(1, genesisBlock.Value.Key, blockChains => { // blockChains[0].HandleNewBlock(genesisBlock.Value.Value); // blockChains[0].HandleNewBlock(block1.Value.Value); AutoResetEvent waitForConnection = new AutoResetEvent(false); bool connected = false; blockChains[0].OnAddedToStore += transaction => { Trace.Information("-- Transaction Received (node server)"); // actionReceiver(); }; AddressManager addressManager = new AddressManager(); addressManager.PeersToFind = 1; NodeConnectionParameters nodesGroupParameters = new NodeConnectionParameters(); // nodesGroupParameters.AddressFrom = servers[1].ExternalEndpoint; nodesGroupParameters.TemplateBehaviors.Add(new AddressManagerBehavior(addressManager)); nodesGroupParameters.TemplateBehaviors.Add(new ChainBehavior(blockChains[0])); nodesGroupParameters.TemplateBehaviors.Add(new BroadcastHubBehavior()); nodesGroupParameters.TemplateBehaviors.Add(new SPVBehavior(blockChains[0], BroadcastHub.GetBroadcastHub(nodesGroupParameters.TemplateBehaviors))); NodesGroup nodesGroup = new NodesGroup(network, nodesGroupParameters); nodesGroup.AllowSameGroup = true; nodesGroup.MaximumNodeConnection = 1; nodesGroup.ConnectedNodes.Added += (object sender, NodeEventArgs e) => { Trace.Information("-- Node added to node group"); connected = true; waitForConnection.Set(); }; nodesGroup.Connect(); Assert.True(waitForConnection.WaitOne(10000)); //TODO: use reset events instead of sleep Assert.True(connected); //TODO Thread.Sleep(40000); // actionSender(BroadcastHub.GetBroadcastHub(nodesGroup.NodeConnectionParameters)); Trace.Information("-- Done"); }); }
//private byte[] genesisBlockHash = new byte[] { 0x01, 0x02 }; public ConsoleNode() { var p = new TestTransactionPool(); p.Add("t1", 1); p.Add("t2", 0); p.Add("t3", 0); p.Spend("t2", "t1", 0); p.Render(); var genesisBlock = new TestBlock(p.TakeOut("t1").Value); var block1 = new TestBlock(p.TakeOut("t2").Value, p.TakeOut("t3").Value); block1.Parent = genesisBlock; genesisBlock.Render(); block1.Render(); Settings settings = JsonLoader <Settings> .Instance.Value; var ipEndpoint = new System.Net.IPEndPoint(IPAddress.Parse(settings.ExternalIPAddress), settings.ServerPort); var blockChain = new BlockChain.BlockChain("db", genesisBlock.Value.Key); if (blockChain.GetBlock(genesisBlock.Value.Key) == null) { Console.WriteLine("Initializing blockchain..."); blockChain.HandleNewBlock(genesisBlock.Value.Value); blockChain.HandleNewBlock(block1.Value.Value); } else { Console.WriteLine("Blockchain initialized."); } OwnResource(blockChain); blockChain.OnAddedToMempool += transaction => { Console.WriteLine("\n** Got Transaction **\n"); }; var server = new Server(this, ipEndpoint, BetaNetwork.Instance); var addressManagerBehavior = server.Behaviors.Find <AddressManagerBehavior>(); var addressManager = addressManagerBehavior.AddressManager; addressManager.Add( new NetworkAddress(ipEndpoint), ipEndpoint.Address ); addressManager.Connected(new NetworkAddress(ipEndpoint)); var broadcastHubBehavior = new BroadcastHubBehavior(); Miner miner = new Miner(blockChain); OwnResource(miner); server.Behaviors.Add(broadcastHubBehavior); server.Behaviors.Add(new SPVBehavior(blockChain, broadcastHubBehavior.BroadcastHub)); server.Behaviors.Add(new MinerBehavior(miner)); server.Behaviors.Add(new ChainBehavior(blockChain)); server.Start(); }