public Arrow(Block fromBlock, Block toBlock) { _fromBlock = fromBlock; _toBlock = toBlock; _id = $"From={fromBlock.Id},To={toBlock.Id}"; Text = string.Empty; }
public void BlockDrawHeaderTest() { var testSubject = new NoFuture.Timeline.Block(); testSubject.Title = "Judea"; var testResult = testSubject.DrawHeader(); Assert.IsNotNull(testResult); System.Diagnostics.Debug.WriteLine(testResult); testSubject.Title = "Rome"; testResult = testSubject.DrawHeader(); Assert.IsNotNull(testResult); System.Diagnostics.Debug.WriteLine(testResult); }
public void BlockToStringTest() { var testRuler = new NoFuture.Timeline.Rule() { EndValue = 20, StartValue = 90 }; var testSubjectB = new NoFuture.Timeline.Block() { EmptyChar = '.', EndValue = 26, Ruler = testRuler, StartValue = 80, Title = "Roman Republic" }; var testResult = testSubjectB.ToString(); Assert.IsNotNull(testResult); Assert.AreNotEqual(0, testResult); System.Diagnostics.Debug.WriteLine(testResult); }
public void PlateConcatAllBlocksTest() { var ruler = new Rule { StartValue = 950, EndValue = 775 }; var egypt = new Block { Ruler = ruler, Title = "Egypt" }; var israel = new Block { Ruler = ruler, Title = "Israel" }; var damascus = new Block { Ruler = ruler, Title = "Damascus" }; var assyria = new Block { Ruler = ruler, Title = "Assyria" }; var northKingdom = new Block { StartValue = 922, EndValue = 775, Ruler = ruler, Title = "Israel" }; var southKingdom = new Block { StartValue = 922, EndValue = 775, Ruler = ruler, Title = "Judea" }; egypt.AddEntry(new Entry { StartValue = 935, Text = "XXII Dyn. 935-725", Location = PrintLocation.Left }); egypt.AddEntry(new Entry { StartValue = 935, EndValue = 914, Text = "Shishak 935-914", Location = PrintLocation.Right }); egypt.AddEntry(new Entry { StartValue = 914, EndValue = 874, Text = "Osorkon I 914-874" }); israel.AddEntry(new Entry { StartValue = 940, Text = "Solomon 961-922" }); southKingdom.AddEntry(new Entry { StartValue = 922, Text = "Rehoboam 922-915" }); southKingdom.AddEntry(new Entry { StartValue = 915, Text = "Abijah 915-913" }); northKingdom.AddEntry(new Entry { StartValue = 922, Text = "Jeroboam I 922-901" }); israel.AddInnerBlock(southKingdom); israel.AddInnerBlock(northKingdom); damascus.AddEntry(new Entry { StartValue = 930, Text = "Rezon" }); assyria.AddEntry(new Entry { StartValue = 935, Text = "Asshur-dan II 935-913" }); var testSubject = new Plate() { Name = "Near East", Ruler = ruler }; testSubject.AddBlock(egypt); testSubject.AddBlock(israel); testSubject.AddBlock(damascus); testSubject.AddBlock(assyria); var testResult = testSubject.ToTextCanvas(); Assert.IsNotNull(testResult); Assert.AreNotEqual(0, testResult.Items); foreach (var item in testResult.Items) { var itemText = new string(item.Text.ToArray()); foreach (var span in item.Ranges) { var subText = itemText.Substring(span.StartIndex, span.Length); System.Diagnostics.Debug.WriteLine("{0} {1} {2} {3} {4} '{5}'",item.Index, item.HashMarkValue,span.Id,span.StartIndex,span.Length, subText); } } }
public void MergeBlockToEntryTest() { var testRuler = new NoFuture.Timeline.Rule() { EndValue = 20, StartValue = 90 }; var testSubjectB = new NoFuture.Timeline.Block() { EmptyChar = '.', EndValue = 26, Ruler = testRuler, StartValue = 90, Title = "Roman Republic" }; var testSubjectA = new NoFuture.Timeline.Entry {Ruler = testRuler, Text = "Ceaser assassinated", StartValue = 44, EndValue = 44}; var testResult = testSubjectA.ToTextCanvas(testRuler).Merge(testSubjectB.ToTextCanvas(testRuler), testRuler); System.Diagnostics.Debug.WriteLine(testResult); }
/// <summary> /// This identifies the current block. When the current block /// is being replaced an arrow will be written from the previous /// block to this block. /// </summary> /// <param name="blockName">Pass in null clear the current block.</param> /// <returns></returns> public virtual FastPlate Blk(string blockName) { if (string.IsNullOrWhiteSpace(blockName) || _blocks.All(x => x.Title != blockName)) { _liveBlock = null; return this; } if (_liveBlock == null) { _liveBlock = _blocks.First(x => x.Title == blockName); return this; } var searchBlk = _blocks.First(x => x.Title == blockName); if (_liveBlock!= null && !searchBlk.Equals(_liveBlock)) { AddArrow(new Arrow(_liveBlock, searchBlk){StartValue = _lineCounter}); _lineCounter += 1; } _liveBlock = searchBlk; return this; }
public void PrintPlateWithInnerPlatesTest() { var ruler = new Rule {StartValue = 950, EndValue = 775}; var egypt = new Block {Ruler = ruler, Title = "Egypt"}; var israel = new Block {Ruler = ruler, Title = "Israel"}; var damascus = new Block {Ruler = ruler, Title = "Damascus"}; var assyria = new Block {Ruler = ruler, Title = "Assyria"}; var northKingdom = new Block {StartValue = 922, EndValue = 775, Ruler = ruler, Title = "Israel"}; var southKingdom = new Block {StartValue = 922, EndValue = 775, Ruler = ruler, Title = "Judea"}; egypt.AddEntry(new Entry {StartValue = 935, Text = "XXII Dyn. 935-725",Location = PrintLocation.Left}); egypt.AddEntry(new Entry { StartValue = 935, EndValue = 914, Text = "Shishak 935-914",Location = PrintLocation.Right}); egypt.AddEntry(new Entry {StartValue = 914, EndValue = 874, Text = "Osorkon I 914-874"}); israel.AddEntry(new Entry {StartValue = 940,Text="Solomon 961-922"}); southKingdom.AddEntry(new Entry {StartValue = 922, Text = "Rehoboam 922-915"}); southKingdom.AddEntry(new Entry {StartValue = 915, Text = "Abijah 915-913"}); northKingdom.AddEntry(new Entry {StartValue = 922, Text = "Jeroboam I 922-901"}); israel.AddInnerBlock(southKingdom); israel.AddInnerBlock(northKingdom); damascus.AddEntry(new Entry {StartValue = 930, Text = "Rezon"}); assyria.AddEntry(new Entry {StartValue = 935, Text = "Asshur-dan II 935-913"}); var testSubject = new Plate() {Name = "Near East", Ruler = ruler}; testSubject.AddBlock(egypt); testSubject.AddBlock(israel); testSubject.AddBlock(damascus); testSubject.AddBlock(assyria); var testResult = testSubject.ToString(); System.Diagnostics.Debug.WriteLine(testResult); }
public void PrintEntriesToCanvasWithInnerBlockTest() { var rule = new Rule() { StartValue = 2100, EndValue = 1500 }; var mesopotamia = new Block() { Ruler = rule, Title = "Mesopotamia" }; mesopotamia.AddEntry(new Entry() { StartValue = 2060, EndValue = 1950, Text = "Ur III" }); var assyria = new Block() { Ruler = rule, Title = "Assyria", StartValue = 1950 }; assyria.AddEntry(new Entry() { StartValue = 1900, Text = "Cappadocian Colonies" }); assyria.AddEntry(new Entry() { StartValue = 1750, Text = "Shamshi-Adad I" }); var mari = new Block() { Ruler = rule, Title = "Mari", StartValue = 1950, EndValue = 1700, Width = 16 }; mari.AddEntry(new Entry() { StartValue = 1750, Text = "The 'Mari Age'" }); var isin = new Block() { Ruler = rule, Title = "Isin", StartValue = 1950, EndValue = 1750, Width = 8 }; var larsa = new Block() { Ruler = rule, Title = "Larsa", StartValue = 1950, EndValue = 1700, Width = 16 }; larsa.AddEntry(new Entry() { StartValue = 1758, Text = "Rim-Sin I" }); var babylon = new Block() { Ruler = rule, Title = "Babylon", StartValue = 1830, EndValue = 1550, Width = 20 }; babylon.AddEntry(new Entry() { StartValue = 1700, Text = "Hammurabi" }); babylon.AddEntry(new Entry() { StartValue = 1630, Text = "Kassite Dyn." }); mesopotamia.AddInnerBlock(assyria); mesopotamia.AddInnerBlock(mari); mesopotamia.AddInnerBlock(isin); mesopotamia.AddInnerBlock(larsa); mesopotamia.AddInnerBlock(babylon); TextCanvas myInnerBlockCanvas = null; if (mesopotamia._innerBlocks.Count > 0) { myInnerBlockCanvas = mesopotamia._innerBlocks[0].PrintEntriesOnCanvas(); System.Diagnostics.Debug.WriteLine(myInnerBlockCanvas); for (var i = 1; i < mesopotamia._innerBlocks.Count; i++) { System.Diagnostics.Debug.WriteLine(myInnerBlockCanvas); myInnerBlockCanvas = myInnerBlockCanvas.Concat(mesopotamia._innerBlocks[i].PrintEntriesOnCanvas(), rule); } } System.Diagnostics.Debug.WriteLine(myInnerBlockCanvas); }
public void PlateToStringWithNotesTest() { var ruler = new Rule() {StartValue = 525, EndValue = 310}; var greece = new Block() {Ruler = ruler, Title = "Greece"}; greece.AddEntry(new Entry(){StartValue = 500, Text = "Ionian revolt", Location = PrintLocation.Right}); greece.AddEntry(new Entry() {StartValue = 490, Text = "Battle of Marathon"}); greece.AddEntry(new Entry(){StartValue = 480, Text = "Battle of Thermopyle / Salamis"}); greece.AddEntry(new Entry(){StartValue = 479, Text ="Battle of Plataea"}); greece.AddEntry(new Entry(){StartValue = 450, Text = "Peace of Callias"}); greece.AddEntry(new Entry(){StartValue = 440, Text = "Parthenon built"}); greece.AddEntry(new Entry(){StartValue = 431,EndValue = 404,Text = "Peloponnesian War"}); greece.AddEntry(new Entry(){StartValue = 400,Text = "Athens return of self-rule"}); greece.AddEntry(new Entry(){StartValue = 390,Text ="Corinthian War"}); greece.AddEntry(new Entry(){StartValue = 338, Text = "Battle of Chaeronea"}); greece.AddEntry(new Entry(){StartValue = 336, Text = "Phillip II rules all Greece"}); greece.AddEntry(new Entry() { StartValue = 460, EndValue = 429, Text = "Pericles" }); greece.AddEntry(new Entry(){StartValue = 323, Text = "Alexander & Fall of Persian Empire"}); greece.AddEntry(new Entry() { StartValue = 500, EndValue = 325, Text = "Classical Period", Location = PrintLocation.Left }); var plate = new Plate() {Name = "Classical Period", Ruler = ruler}; plate.AddBlock(greece); var testResult = plate.ToString(); Assert.IsNotNull(testResult); System.Diagnostics.Debug.WriteLine(testResult); }
public virtual void AddInnerBlock(Block innerBlock) { if (Ruler == null) throw new NoRuleSetException(); if(innerBlock.StartValue == Ruler.StartValue) throw new InnerBlockRequiresStartValue(innerBlock); //for the first inner block added take the larger width (thiers or ours) if (_innerBlocks.Count == 0) { var gtWidth = Width > innerBlock.Width ? Width : innerBlock.Width; Width = gtWidth; innerBlock.Width = gtWidth; } else//thereafter set the width as a sum { Width += innerBlock.Width+1; } //back the inner block up by one line for printing the title var innerBlockIdx = Ruler.CalcEntryIndex(innerBlock); var valForNextLine = Convert.ToInt32(Math.Floor(Ruler.GetIndexRule()[(innerBlockIdx.Item1 - 1)])); innerBlock.StartValue = valForNextLine; _innerBlocks.Add(innerBlock); }
public virtual void AddBlock(Block block) { block.Ruler = Ruler; _blocks.Add(block); }
public virtual void AddArrow(Block fromBlock, Block toBlock, int startVal) { _arrows.Add(new Arrow(fromBlock, toBlock) {StartValue = startVal}); }
public InnerBlockRequiresStartValue(Block block) : base(string.Format("Block titled '{0}' must have a start value different from the start value of the Rule.", block.Title)) { }
public virtual FastPlate Blk(int idx) { if (_blockIdxName.ContainsKey(idx)) return Blk(_blockIdxName[idx]); _liveBlock = null; return this; }
public Plate CE1700to1788() { var rule = new Rule {StartValue = 1700, EndValue = 1790, RuleLineSpacing = 7}; var amer = new Block {Ruler = rule, Title = "Americas"}; var col = new Block {StartValue = 1703, EndValue = 1783, Title = "Colonies", Ruler = rule}; col.AddEntry(1771, "Boston Massacre(1770)", PrintLocation.Left); col.AddEntry(1703, "Yale College (1700)"); col.AddEntry(1727, "[Bering] Bering straight(1728)"); col.AddEntry(1739, "Stono Rebellion(1739)"); col.AddEntry(1730, "Baltimore MA(1730)"); col.AddEntry(1764, "Mason Dixon survey(1764)"); col.AddEntry(1769, "[D.Boone]-Kentucky(1769)"); col.AddEntry(1773, "Boston Tea Party(1773)"); col.AddEntry(1704, 1713, "Queen Anne's War"); col.AddEntry(1754, 1763, "French Indian War"); col.AddEntry(1775, 1783, "American Rev.(1775-1783)", PrintLocation.Left); col.AddEntry(1777, "NY occupied(1776)"); col.AddEntry(1778, "Savannah occupied(1778)"); col.AddEntry(1780, "Charleston occupied(1780)"); var que = new Block {StartValue = 1703, EndValue = 1763, Title = "New France", Ruler = rule, Width = 22}; que.AddEntry(1703, "Fr.settle Mobile AL"); que.AddEntry(1718, "New Orleans LA(1718)"); var usa = new Block {StartValue = 1775, Title = "United States", Ruler = rule}; usa.AddEntry(1776, "Lafayette in PA(1777)"); usa.AddEntry(1781, "Cornwallis surrender(1781)"); usa.AddEntry(1783, "Peace of Paris(1783)"); usa.AddEntry(1787, "U.S.Constitution(1787)"); amer.AddInnerBlock(col); amer.AddInnerBlock(usa); amer.AddInnerBlock(que); amer.AddArrow(new Arrow(que, col) {StartValue = 1706, ArrowTail = "."}); amer.AddArrow(new Arrow(col, que) {StartValue = 1755, Text = "B. of the Monongahela"}); amer.AddArrow(new Arrow(que, col) {StartValue = 1757, Text = "massacre @ F.William Henry"}); var engd = new Block {Ruler = rule, Title = "United Kingdom"}; engd.AddEntry(1704, "[Anne 1702-1714]", PrintLocation.Left); engd.AddEntry(1720, "[George I 1714-1727]", PrintLocation.Left); engd.AddEntry(1727, "[George II 1727-1760]", PrintLocation.Left); engd.AddEntry(1730, "first railroad(1730)"); engd.AddEntry(1739, "Wesley/Whitefield[Methodism]"); engd.AddEntry(1745, "Jacobite Rebellion(1745)"); engd.AddEntry(1760, "[George III 1760-1820]", PrintLocation.Left); engd.AddEntry(1766, "H.Cavendish[hydrogen](1766)", PrintLocation.Right); engd.AddEntry(1776, "'Wealth of Nations' A.Smith(1776)", PrintLocation.Right); engd.AddEntry(1777, " 'Rise & Fall..Roman Empire'Gibbon(1777)", PrintLocation.Right); engd.AddEntry(1781, "1st Sunday-school(R.Raikes)(1781)", PrintLocation.Right); engd.AddEntry(1769, "J.Watt[steam engine](1769)", PrintLocation.Right); engd.AddEntry(1764, "J.Hargreaves[spinning jenny](1764)", PrintLocation.Right); engd.AddEntry(1782, "Lord North resigns as PM(1782)"); engd.AddEntry(1787, "Australia penal settlement(1788)"); engd.AddEntry(1789, "[Cook]Hawaiian Islands(1788)"); engd.AddEntry(1702, 1714, "Stuart(restored)", PrintLocation.Left); engd.AddEntry(1715, 1800, "Hanover", PrintLocation.Left); var fr = new Block {Ruler = rule, Title = "France"}; fr.AddEntry(1601, "[Louis XIV 1643-1715]", PrintLocation.Left); fr.AddEntry(1715, "[Louis XV 1715-1774]", PrintLocation.Left); fr.AddEntry(1774, "[Louis XVI 1774-1792]", PrintLocation.Left); fr.AddEntry(1720, "France bankrupt(1721)"); fr.AddEntry(1748, "'The Spirit of Laws' Montesquieu(1748)", PrintLocation.Right); fr.AddEntry(1761, "'Social Contract' Rousseau(1761)", PrintLocation.Right); fr.AddEntry(1756, "Diplomatic Revolution(1756)(c.)"); fr.AddEntry(1783, "1st hot-air ballon(1783)", PrintLocation.Right); fr.AddEntry(1702, 1790, "Capetian[Bourbon]", PrintLocation.Left); fr.AddEntry(1701, 1714, "War of Spanish Succ.(1701-1714)"); var de = new Block {Ruler = rule, Title = "Prussia"}; de.AddEntry(1702, "[Fredrick I 1701-1713]", PrintLocation.Left); de.AddEntry(1713, "[Fredrick William I 1713-1740]", PrintLocation.Left); de.AddEntry(1740, "[Fredrick the Great 1740-1786]", PrintLocation.Left); de.AddEntry(1786, "[Fredrick William II 1786-1797]", PrintLocation.Left); de.AddEntry(1781, "'Critique of Pure Reason' E.Kant(1781)", PrintLocation.Right); de.AddEntry(1715, "Fahrenheit[thermometer](1714)"); de.AddEntry(1730, "'Toccata Fugue' Bach(~1730s)"); de.AddEntry(1754, 1763, "Seven's Year War"); var aus = new Block {Ruler = rule, Title = "Austrian Empire"}; aus.AddEntry(1701, "[Leopold I 1640-1705]", PrintLocation.Left); aus.AddEntry(1705, "[Joseph I 1705-1711]", PrintLocation.Left); aus.AddEntry(1711, "[Charles III 1711-1740]", PrintLocation.Left); aus.AddEntry(1739, "[Maria Theresa 1740-1780]", PrintLocation.Left); aus.AddEntry(1780, "[Joseph II 1780-1790]", PrintLocation.Left); aus.AddEntry(1783, "Mozart in Vienna", PrintLocation.Right); aus.AddEntry(1741, 1748, "War of Austrian Succ.(1740-1748)"); var ott = new Block {Ruler = rule, Title = "Ottoman Empire"}; ott.AddEntry(1710, "[Ahmed III 1703-1730]", PrintLocation.Left); ott.AddEntry(1730, "[Mahmud I 1730-1754]", PrintLocation.Left); ott.AddEntry(1754, "[Osman III 1754-1757]", PrintLocation.Left); ott.AddEntry(1757, "[Mustafa III 1757-1774]", PrintLocation.Left); ott.AddEntry(1774, "[Abdulhamid I 1774-1789]", PrintLocation.Left); ott.AddEntry(1789, "[Selim III 1789-1807]", PrintLocation.Left); var rus = new Block {Ruler = rule, Title = "Imperial Russia", StartValue = 1721}; rus.AddEntry(1725, "[Peter the Great 1695-1725]"); rus.AddEntry(1727, 1760, "[internal intrigue]"); rus.AddEntry(1762, "[Catherine theGreat 1762-1796]"); rus.AddEntry(1783, "(+)Crimea(1783)"); rus.AddEntry(1768, 1774, "1st Russio-Turkish War", PrintLocation.Right); var plate = new Plate {Ruler = rule, Name = "Early Modern Age(2)"}; plate.AddBlock(amer); plate.AddBlock(engd); plate.AddBlock(fr); plate.AddBlock(de); plate.AddBlock(aus); plate.AddBlock(ott); plate.AddBlock(rus); plate.AddArrow(new Arrow(aus, fr) {StartValue = 1704, Text = "B. of Blenheim(1704)"}); plate.AddArrow(new Arrow(fr, de) {StartValue = 1706, Text = "B. of Ramilies(1706)"}); plate.AddArrow(new Arrow(fr, de) {StartValue = 1708, Text = "B. of Oudenarde(1708)"}); plate.AddArrow(new Arrow(engd, fr) {StartValue = 1709, Text = "B. of Malpaquet(1709)"}); plate.AddArrow(new Arrow(aus, ott) {StartValue = 1717, Text = "B. of Belgrad(1717)"}); plate.AddArrow(new Arrow(de, aus) {StartValue = 1740, Text = "invasion of Silesia(1740)"}); plate.AddArrow(new Arrow(engd, fr) {StartValue = 1743, Text = "B. of Dettingen(1743)(e.)"}); plate.AddArrow(new Arrow(de, aus) {StartValue = 1757, Text = "B. of Prague(1757)"}); plate.AddArrow(new Arrow(rus, ott) {StartValue = 1770, Text = "B.of Chesma & Kagus(1770)"}); plate.AddArrow(new Arrow(engd, aus) { StartValue = 1714, Text = "Peace of Ulrecht(1714)(a.)", ArrowTail = "[..........", FromLeftToRightArrowHead = "......]", }); plate.AddArrow(new Arrow(aus, de) { StartValue = 1748, Text = "Treaty of Aix-la-Chapelle(1748)", ArrowTail = "........]", FromRightToLeftArrowHead = "[.....", }); plate.AddArrow(new Arrow(engd, fr) { StartValue = 1763, Text = "Treaty of Paris(1763)(b.)", ArrowTail = "[..........", FromLeftToRightArrowHead = "......]", }); plate.AddArrow(new Arrow(de, aus) { StartValue = 1788, Text = "War of Bavarian Succ.(1778\\79)", ArrowTail = "[.........", FromLeftToRightArrowHead = "]", }); plate.AddArrow(new Arrow(engd, amer) { StartValue = 1771, Text = "B. of the Alamance(1771)", FromRightToLeftArrowHead = "<..............................." }); plate.AddArrow(new Arrow(engd, amer) { StartValue = 1775, Text = "B. of Lexington(1775)", FromRightToLeftArrowHead = "<........................", ArrowTail = "." }); plate.AddArrow(new Arrow(engd, amer) { StartValue = 1777, Text = "B. at Trenton(1777)", FromRightToLeftArrowHead = "<........................", ArrowTail = "." }); plate.Notes.Add("(a.)marks the end of Wars of Spanish Succession"); plate.Notes.Add("(b.)British supremacy in Canada and India"); plate.Notes.Add("(c.)England allies with Prussia - Austria with France."); plate.Notes.Add("(d.)start of Wars of Austrian Succ."); plate.Notes.Add("(e.)fought on German soil"); return plate; }
public void PlateSplitBlockTest() { var rule = new Rule() {StartValue = 2050, EndValue = 1500}; var mesopotamia = new Block() {Ruler = rule, Title = "Mesopotamia"}; mesopotamia.AddEntry(new Entry(){StartValue = 2060, EndValue = 1950, Text = "Ur III: ca. 2060-1950"}); var assyria = new Block(){Ruler = rule, StartValue = 1950, EndValue = 1550, Title = "Assyria"}; var babylon = new Block {Ruler = rule, StartValue = 1830, EndValue = 1530, Title = "I Babylon"}; var kassite = new Block {Ruler = rule, StartValue = 1650, EndValue = 1500, Title = "Kassite Dyn."}; mesopotamia.AddInnerBlock(assyria); mesopotamia.AddInnerBlock(babylon); mesopotamia.AddInnerBlock(kassite); mesopotamia.AddArrow(new Arrow(babylon,assyria) {StartValue = 1728,Text = "Hammurabi"}); var hittites = new Block {Ruler = rule, Title = "Hittites"}; var palestine = new Block() {Ruler = rule, Title = "Palestine"}; var egypt = new Block() {Ruler = rule, Title = "Egypt"}; var plate = new Plate() {Name = "Near East 2050-1500", Ruler = rule}; plate.AddBlock(mesopotamia); plate.AddBlock(hittites); plate.AddBlock(palestine); plate.AddBlock(egypt); var testResult = plate.ToString(); System.Diagnostics.Debug.WriteLine(testResult); }
public Plate CE1788to1865() { var rule = new Rule {StartValue = 1785, EndValue = 1867, RuleLineSpacing = 7}; var usa = new Block {Ruler = rule, Title = "United States"}; usa.AddEntry(1787, "+DE,PA,NJ(1787)", PrintLocation.Right); usa.AddEntry(1788, "+GA,CT,MA,MD,SC,NH,VA,NY(1788)", PrintLocation.Right); usa.AddEntry(1789, "[Washington 1789-1797]", PrintLocation.Left); usa.AddEntry(1789, "+NC(1789)", PrintLocation.Right); usa.AddEntry(1790, "+RI(1790)", PrintLocation.Right); usa.AddEntry(1791, "+VT(1791)", PrintLocation.Right); usa.AddEntry(1792, "+KY(1792)", PrintLocation.Right); usa.AddEntry(1793, "E.Whitney[cottin gin](1793)(d.)"); usa.AddEntry(1796, "+TN(1796)", PrintLocation.Right); usa.AddEntry(1797, "[John Adams -1801]", PrintLocation.Left); usa.AddEntry(1801, "[T.Jefferson -1809]", PrintLocation.Left); usa.AddEntry(1802, "West Point founded(1802)"); usa.AddEntry(1803, "Louisiana Purchase(1803)"); usa.AddEntry(1803, "+OH(1803)", PrintLocation.Right); usa.AddEntry(1804, "Lewis & Clark Expedition(1804)"); usa.AddEntry(1809, "[James Madison -1817]", PrintLocation.Left); usa.AddEntry(1811, "B.of Tippecanoe(1811)(h.)"); usa.AddEntry(1812, "+LA(1812)", PrintLocation.Right); usa.AddEntry(1815, "failed Canadian conquest"); usa.AddEntry(1816, "+IN(1816)", PrintLocation.Right); usa.AddEntry(1816, "First Seminole War(1816-1819)"); usa.AddEntry(1817, "[James Monroe -1825]", PrintLocation.Left); usa.AddEntry(1817, "+MS(1817)", PrintLocation.Right); usa.AddEntry(1818, "+IL(1818)", PrintLocation.Right); usa.AddEntry(1819, "+AL(1819)", PrintLocation.Right); usa.AddEntry(1820, "+ME(1820)", PrintLocation.Right); usa.AddEntry(1821, "+MO(1821)", PrintLocation.Right); usa.AddEntry(1825, "[John Quincy Adams -1829]", PrintLocation.Left); usa.AddEntry(1826, "'Last of the Mohicans'J.F.Cooper(1826)"); usa.AddEntry(1829, "[Andrew Jackson -1837]", PrintLocation.Left); usa.AddEntry(1835, "Second Seminole War(1835-1842)"); usa.AddEntry(1836, "+AR(1836)", PrintLocation.Right); usa.AddEntry(1837, "[Martin Van Buren -1841]", PrintLocation.Left); usa.AddEntry(1839, "Morse[telegraph](1837)"); usa.AddEntry(1837, "+MI(1837)", PrintLocation.Right); usa.AddEntry(1841, "[William H Harrison -1841]", PrintLocation.Left); usa.AddEntry(1842, "[John Tyler -1845]", PrintLocation.Left); usa.AddEntry(1845, "[James K Polk -1849]", PrintLocation.Left); usa.AddEntry(1845, "+FL,TX(1845)", PrintLocation.Right); usa.AddEntry(1846, "+IA(1846)", PrintLocation.Right); usa.AddEntry(1844, "W.Morton[anesthesia](1846)"); usa.AddEntry(1847, "U.S.-Mexican War(1846-1848)"); usa.AddEntry(1848, "+WI(1848)", PrintLocation.Right); usa.AddEntry(1849, "[Zachary Taylor -1850]", PrintLocation.Left); usa.AddEntry(1849, "'The Scarlet Letter'N.Hawthorne'", PrintLocation.Right); usa.AddEntry(1850, "[Millard Fillmore -1853]", PrintLocation.Left); usa.AddEntry(1850, "+CA(1850)", PrintLocation.Right); usa.AddEntry(1851, "'Moby-Dick'H.Melville(1851)", PrintLocation.Left); usa.AddEntry(1851, "'Uncle Tom's Cabin'H.B.Stowe(1852)", PrintLocation.Right); usa.AddEntry(1852, "Perry Expedition to Japan(1852-54)"); usa.AddEntry(1853, "[Franklin Pierce -1857]", PrintLocation.Left); usa.AddEntry(1855, "Third Seminole War(1855-1858)"); usa.AddEntry(1857, "[James Buchanan -1861]", PrintLocation.Left); usa.AddEntry(1858, "+MN(1858)", PrintLocation.Right); usa.AddEntry(1859, "+OR(1859)", PrintLocation.Right); usa.AddEntry(1860, "[Abraham Lincoln -1865]", PrintLocation.Left); usa.AddEntry(1861, "+KS(1861)", PrintLocation.Right); usa.AddEntry(1861, "Ft.Sumter fired on(e.)", PrintLocation.Left); usa.AddEntry(1863, "Lee's invasion of PA,", PrintLocation.Left); usa.AddEntry(1863, "Siege of Vicksburg, +WV(1863)", PrintLocation.Right); usa.AddEntry(1864, "Siege of Petersburg,", PrintLocation.Left); usa.AddEntry(1864, "Atlanta falls, +NV(1864)", PrintLocation.Right); usa.AddEntry(1865, "Richmond falls,", PrintLocation.Left); usa.AddEntry(1865, "surrender @ Appomattox(1865)(f.)", PrintLocation.Right); usa.AddEntry(1866, "Lincoln assassinated(1865)"); usa.AddEntry(new ScienceAdvEntry("rotary press", "R.M.Hoe") {StartValue = 1843}); var engd = new Block {Ruler = rule, Title = "United Kingdom"}; engd.AddEntry(1798, "Jenner[vaccination](1798)", PrintLocation.Left); engd.AddEntry(1800, "Volta[battery](1800)"); engd.AddEntry(1801, "[William Pitt -1801\\-1806]", PrintLocation.Left); engd.AddEntry(1803, "Dalton[atomic theory](1803)"); engd.AddEntry(1804, "[Henry Addington -1804]", PrintLocation.Left); engd.AddEntry(1806, "[Baron Grenville -1807]", PrintLocation.Left); engd.AddEntry(1807, "[W. Cavendish-Bentinck -1809]", PrintLocation.Left); engd.AddEntry(1809, "[Spencer Perceval -1812]", PrintLocation.Left); engd.AddEntry(1812, "[R.B Jenkinson -1827]", PrintLocation.Left); engd.AddEntry(1813, "'Pride & Prejudice'J.Austen(1813)", PrintLocation.Right); engd.AddEntry(1826, "[G. Canning -1827]", PrintLocation.Left); engd.AddEntry(1827, "[Viscount Goderich -1828]", PrintLocation.Left); engd.AddEntry(1828, "[Arthur Wellesley -1830]", PrintLocation.Left); engd.AddEntry(1830, "[Charles Grey -1834]", PrintLocation.Left); engd.AddEntry(1831, "Faraday[law of induction](1831)"); engd.AddEntry(1836, "[R.Peel & W.Lamb(a.) -1846]", PrintLocation.Left); engd.AddEntry(1843, "J.P.Joule[1st law thermodyn](1843)"); engd.AddEntry(1844, "Franklin's lost expedition(1845)"); engd.AddEntry(1846, "[John Russel -1852]", PrintLocation.Left); engd.AddEntry(1847, "Kelvin[absolute zero](1848)"); engd.AddEntry(1848, "'Communist Manifesto'(1848)"); engd.AddEntry(1855, "[G. Hamilton-Gordon -1852-55]", PrintLocation.Left); engd.AddEntry(1858, "[E. Smith-Stanley -1852\\1858-59]", PrintLocation.Left); engd.AddEntry(1860, "[H. John Temple 1855-58\\59-65]", PrintLocation.Left); engd.AddEntry(1833, "'Principles of Geology' Lyell(1833)", PrintLocation.Right); engd.AddEntry(1834, "Abolition Act(1833)", PrintLocation.Right); engd.AddEntry(1838, "'Oliver Twist'Dickens(1838)"); engd.AddEntry(1859, "'Origin of Species' Darwin(1859)", PrintLocation.Right); engd.AddEntry(1861, "'Great Expectations'Dickens(1861)"); engd.AddEntry(new ScienceAdvEntry("electromag.", "Maxwell") {StartValue = 1864}); engd.AddEntry(1865, "First Subway(1864)"); engd.AddEntry(1840, 1860, "Industrial Revolution", PrintLocation.Right); engd.AddEntry(1839, 1866, "Queen Victoria (1837-1901)", PrintLocation.Left); var fr = new Block {Ruler = rule, Title = "France"}; fr.AddEntry(1789, "Estates-General meets(1789)(b.)", PrintLocation.Left); fr.AddEntry(1791, "Storming of the Bastille(1789)", PrintLocation.Left); fr.AddEntry(1792, "Louis XVI executed(1793)", PrintLocation.Left); fr.AddEntry(1793, "Reign of Terror(1793\\94)", PrintLocation.Left); fr.AddEntry(1794, "Robespierre executed(1794)", PrintLocation.Left); fr.AddEntry(1795, "Napolean quells insurrection(1795)", PrintLocation.Left); fr.AddEntry(1796, "Cuvier[extinction](1796)"); fr.AddEntry(1824, "Carnot[heat engine](1824)"); fr.AddEntry(1833, "A.Payen[enzymes](1833)"); fr.AddEntry(1845, "'Count of Monte Cristo'A.Dumas(1845)"); fr.AddEntry(1848, "revolution of 1848 & 2nd Republic "); fr.AddEntry(1861, "Pasteur[germ theory](1861)"); fr.AddEntry(1863, "'Les Miserables'V.Hugo(1862)"); fr.AddEntry(1787, 1792, "French Revolution", PrintLocation.Right); fr.AddEntry(1793, 1804, "1st Republic", PrintLocation.Right); fr.AddEntry(1804, 1814, "Napolean(French Empire)"); fr.AddEntry(1815, 1830, "Bourbon Restoration", PrintLocation.Right); fr.AddEntry(1831, 1848, "July Monarchy", PrintLocation.Right); fr.AddEntry(1852, 1866, "2nd French Empire", PrintLocation.Right); var de = new Block {Ruler = rule, Title = "Prussia"}; de.AddEntry(1848, "revolution of 1848"); de.AddEntry(1789, "[Frederick William II 1786-1797]", PrintLocation.Left); de.AddEntry(1795, "[Frederick William III 1797-1840]", PrintLocation.Left); de.AddEntry(1809, "'Faust'Goethe(1808)"); de.AddEntry(1820, "H.C.Orsted[electromagnetism](1820)"); de.AddEntry(1827, "Ohm[Ohm's law](1827)"); de.AddEntry(1834, "German free-trade zone(1834)"); de.AddEntry(1838, "M.Schleiden[plant cells](1838)"); de.AddEntry(1840, "[Frederick William IV 1840-1861]", PrintLocation.Left); de.AddEntry(1846, "Neptune discovered(1846)"); de.AddEntry(1862, "Otto V.Bismarck as PM(1862)"); de.AddEntry(1866, "'Capital' Marx(1867)"); de.AddEntry(1865, "Mendel[inheritance](1865)"); var aus = new Block {Ruler = rule, Title = "Austrian Empire", Width = 30}; aus.AddEntry(1788, "[Joseph II 1765-1790]", PrintLocation.Left); aus.AddEntry(1790, "[Leopold VII 1790-1792]", PrintLocation.Left); aus.AddEntry(1791, "[Francis II 1792-1804]", PrintLocation.Left); aus.AddEntry(1804, "[Francis I 1804-1835]", PrintLocation.Left); aus.AddEntry(1821, "K.V.Metternich PM(1821-1848)", PrintLocation.Left); aus.AddEntry(1835, "[Ferdinand I 1835-1848]", PrintLocation.Left); aus.AddEntry(1847, "[Francis Joseph 1848-1916]", PrintLocation.Left); aus.AddEntry(1815, "Congress of Vienna(1815)"); aus.AddEntry(1842, "Doppler[Doppler efct](1842)"); aus.AddEntry(1848, "revolution of 1848"); var ott = new Block {Ruler = rule, Title = "Ottoman Empire"}; ott.AddEntry(1789, "[Selim III 1789-1807]", PrintLocation.Left); ott.AddEntry(1807, "[Mustafa IV 1807/8]", PrintLocation.Left); ott.AddEntry(1809, "[Mahmud II 1808-1839]", PrintLocation.Left); ott.AddEntry(1839, "[Abdulmecid I 1839-1861]", PrintLocation.Left); ott.AddEntry(1852, "Epirus Revolt(1854)"); ott.AddEntry(1861, "[Abdulaziz I 1861-1876]", PrintLocation.Left); ott.AddEntry(1821, 1832, "Greek War of Independence"); var rus = new Block {Ruler = rule, Title = "Imperial Russia"}; rus.AddEntry(1796, "[Paul I 1796-1801]", PrintLocation.Left); rus.AddEntry(1801, "[Alexander I 1801-1825]", PrintLocation.Left); rus.AddEntry(1825, "Decembrist revolt(1825)"); rus.AddEntry(1824, "[Nicholas I 1825-1855]", PrintLocation.Left); rus.AddEntry(1830, "Lobachevsky[Non-Euclidean geo](1830)"); rus.AddEntry(1855, "[Alexander II 1855-1881]", PrintLocation.Left); rus.AddEntry(1860, "Vladivostok founded(1860)"); rus.AddEntry(1861, "serfs freed(1861)"); rus.AddEntry(1852, 1856, "Crimean War"); var plate = new Plate {Ruler = rule, Name = "Modern Age(1)"}; plate.AddBlock(usa); plate.AddBlock(engd); plate.AddBlock(fr); plate.AddBlock(de); plate.AddBlock(aus); plate.AddBlock(ott); plate.AddBlock(rus); plate.AddArrow(new Arrow(aus, ott) {Text = "B.of Focsani(1789)", StartValue = 1789}); plate.AddArrow(new Arrow(rus, ott) {StartValue = 1789, FromRightToLeftArrowHead = "<......"}); plate.AddArrow(new Arrow(aus, fr) {StartValue = 1792}); plate.AddArrow(new Arrow(de, fr) {StartValue = 1793}); plate.AddArrow(new Arrow(fr, aus) {StartValue = 1796, Text = "B.of Rivoli(1797)"}); plate.AddArrow(new Arrow(fr, ott) {Text = "B.of the Pryamids(1798)(c.)", StartValue = 1797}); plate.AddArrow(new Arrow(engd, fr) {Text = "B.of the Nile(1798)(g.)", StartValue = 1798}); plate.AddArrow(new Arrow(fr, aus) {Text = "B.of Marengo(1800)", StartValue = 1800}); plate.AddArrow(new Arrow(rus, fr) {Text = "B.of Leipzig(1813)", StartValue = 1813}); plate.AddArrow(new Arrow(engd, usa) { Text = "DC sacked(1814)", StartValue = 1814, ArrowTail = ".", FromRightToLeftArrowHead = "<...." }); plate.AddArrow(new Arrow(engd, fr) {Text = "Waterloo(1815)", StartValue = 1815}); plate.AddArrow(new Arrow(fr, rus) {StartValue = 1812}); plate.AddArrow(new Arrow(rus, ott) {StartValue = 1853, Text = "B.of Sinop(1853)"}); plate.AddArrow(new Arrow(engd, rus) {StartValue = 1854, Text = "B.of Balaclava(1854)"}); plate.Notes.Add("(a.) last Prime Minister dismissed by a king, (b.) last met in 1614"); plate.Notes.Add( "(c.) intended to cut England off from India, (d.) pop. of black slaves goes from 700 thousand to 3 million"); plate.Notes.Add("(e.) April 12, 1861, (f.) April 9, 1865 (est. 620,000 killed)"); plate.Notes.Add( "(g.) Napolean's Navy destroyed, (h.) Gen. Harrison defeats confederacy of Native Americans"); return plate; }
public void PrintEntriesToCanvasTest() { var testRuler = new Rule() { EndValue = 575, StartValue = 775 }; var testBlock1 = new Block() { EndValue = 575, StartValue = 775, Title = "Judah", Ruler = testRuler }; var testEntry1 = new Entry() { EndValue = 687, StartValue = 732, Ruler = testRuler, Text = "(Isaiah)", Location = PrintLocation.Center }; var testEntry2 = new Entry() { EndValue = 702, StartValue = 733, Ruler = testRuler, Text = "(Micah)", Location = PrintLocation.Right }; var testEntry3 = new Entry() {EndValue = 735, StartValue = 735, Ruler = testRuler, Text = "Ahaz 735-715"}; var testEntry4 = new Entry() { EndValue = 715, StartValue = 715, Ruler = testRuler, Text = "Hezekiah 715-687" }; testBlock1.AddEntry(testEntry1); testBlock1.AddEntry(testEntry2); testBlock1.AddEntry(testEntry3); testBlock1.AddEntry(testEntry4); var testResult = testBlock1.PrintEntriesOnCanvas(); Assert.IsNotNull(testResult); System.Diagnostics.Debug.WriteLine(testResult); }
public void TextAfterBlockEnd() { var rule = new Rule() { StartValue = 780, EndValue = 500, RuleLineSpacing = 7 }; var judah = new Block() { Ruler = rule, Title = "Judah", StartValue = 780, EndValue = 587 }; judah.AddEntry(560, "Exile"); var plate = new Plate() { Ruler = rule, Name = "Mid-Eighth to Fifth Centuries BCE" }; plate.AddBlock(judah); System.Diagnostics.Debug.WriteLine(plate.ToString()); }
public void PrintPlateTest() { var testRuler = new Rule() { EndValue = 575, StartValue = 775 }; var testBlock1 = new Block() { EndValue = 575, StartValue = 775, Title = "Judah", Ruler = testRuler }; var testBlock2 = new Block() {EndValue = 575, StartValue = 775, Title = "Egypt", Ruler = testRuler}; testBlock1.AddEntry(new Entry() { Text = "Uzziah 783-742", StartValue = 765, EndValue = 765, }); testBlock1.AddEntry(new Entry() { Text = "(Jotham coregent 750)", StartValue = 750, EndValue = 750, Location = PrintLocation.Right }); testBlock1.AddEntry(new Entry() { Text = "Jotham 742-735", StartValue = 742, EndValue = 742, }); testBlock1.AddEntry(new Entry() { EndValue = 687, StartValue = 732, Text = "(Isaiah)", Location = PrintLocation.Center }); testBlock1.AddEntry(new Entry() { EndValue = 702, StartValue = 733, Text = "(Micah)", Location = PrintLocation.Right }); testBlock1.AddEntry(new Entry() { EndValue = 735, StartValue = 735, Text = "Ahaz 735-715" }); testBlock1.AddEntry(new Entry() { EndValue = 715, StartValue = 715, Text = "Hezekiah 715-687" }); testBlock2.AddEntry(new Entry() { Text = "XXII Dyn. 935-725", StartValue = 935, EndValue = 725, Location = PrintLocation.Left }); testBlock2.AddEntry(new Entry() { Text = "XXIV Dyn. 725-709", StartValue = 725, EndValue = 709, }); testBlock2.AddEntry(new Entry() {Text = "Neco II 610-594", StartValue = 610, EndValue = 610}); var testSubject = new Plate() {Ruler = testRuler, Name = "Near East"}; testSubject.AddBlock(testBlock1); testSubject.AddBlock(testBlock2); var testResult = testSubject.ToString(); Assert.IsNotNull(testResult); System.Diagnostics.Debug.WriteLine(testResult); }
public void GetRequiredWidthTest() { var ruler = new Rule { StartValue = 950, EndValue = 775 }; var egypt = new Block { Ruler = ruler, Title = "Egypt" }; egypt.AddEntry(new Entry { StartValue = 935, Text = "XXII Dyn. 935-725", Location = PrintLocation.Left }); egypt.AddEntry(new Entry { StartValue = 935, EndValue = 914, Text = "Shishak 935-914", Location = PrintLocation.Right }); var testResult = egypt.GetRequiredWidth(); Assert.AreNotEqual(0, testResult); System.Diagnostics.Debug.WriteLine(testResult); }
public void ConcatBlockTest() { var rule = new Rule() { StartValue = 2100, EndValue = 1500 }; var assyria = new Block() { Ruler = rule, Title = "Assyria", StartValue = 1950 }; var mari = new Block() { Ruler = rule, Title = "Mari", StartValue = 1950, EndValue = 1700, Width = 16 }; var isin = new Block() { Ruler = rule, Title = "Isin", StartValue = 1950, EndValue = 1750, Width = 8 }; var larsa = new Block() { Ruler = rule, Title = "Larsa", StartValue = 1950, EndValue = 1700, Width = 16 }; var babylon = new Block() { Ruler = rule, Title = "Babylon", StartValue = 1830, EndValue = 1550, Width = 20 }; var testResult = assyria.ToTextCanvas(rule).Concat(mari.ToTextCanvas(rule), rule); testResult = testResult.Concat(isin.ToTextCanvas(rule), rule); testResult = testResult.Concat(larsa.ToTextCanvas(rule), rule); testResult = testResult.Concat(babylon.ToTextCanvas(rule), rule); System.Diagnostics.Debug.WriteLine(testResult.ToString()); }
public FastPlate(string plateTitle, int? dfWidth, params string[] blockNames) { if (dfWidth != null) Config.Numerics.DefaultWidth = dfWidth.Value; var ruler = new Rule {StartValue = 1, EndValue = 16, RuleLineSpacing = 3}; if (blockNames == null || blockNames.Length <= 0) throw new ArgumentNullException(nameof(blockNames)); Name = string.IsNullOrWhiteSpace(plateTitle) ? "Sequence Diagram" : plateTitle; Ruler = ruler; var c = 0; foreach (var blkNm in blockNames) { var blk = new Block { Ruler = ruler, Title = blkNm }; _blocks.Add(blk); _blockIdxName.Add(c, blkNm); c += 1; } }