<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.catglobe.com/index.php?action=history&amp;feed=atom&amp;title=Comparing_2_images_for_equality</id>
	<title>Comparing 2 images for equality - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.catglobe.com/index.php?action=history&amp;feed=atom&amp;title=Comparing_2_images_for_equality"/>
	<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;action=history"/>
	<updated>2026-04-30T05:21:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=24692&amp;oldid=prev</id>
		<title>Wikicatglobe at 10:38, 17 October 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=24692&amp;oldid=prev"/>
		<updated>2013-10-17T10:38:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:38, 17 October 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;accesscontrol&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Administrators,,Cem,,Maysunshine&lt;/del&gt;&amp;lt;/accesscontrol&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;accesscontrol&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Main:MyGroup&lt;/ins&gt;&amp;lt;/accesscontrol&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Miscellaneous]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Miscellaneous]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Introduction ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Introduction ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-19635:rev-24692:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Wikicatglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=19635&amp;oldid=prev</id>
		<title>Cg_pham at 09:46, 24 October 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=19635&amp;oldid=prev"/>
		<updated>2011-10-24T09:46:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:46, 24 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Administrators,,Cem,,Maysunshine&amp;lt;/accesscontrol&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;accesscontrol&amp;gt;Administrators,,Cem,,Maysunshine&amp;lt;/accesscontrol&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Guidelines&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Miscellaneous&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Introduction ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Introduction ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;At the time of writing this page, we are testing the affection of changing stylesheet manually. This is not a good way of testing, because there are more than 2000 settings in stylesheet, and testers simply can&amp;#039;t re-test over and over again. So, we come to a decision of making some automatic testing tool that can assert the correctness of diagrams.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;At the time of writing this page, we are testing the affection of changing stylesheet manually. This is not a good way of testing, because there are more than 2000 settings in stylesheet, and testers simply can&amp;#039;t re-test over and over again. So, we come to a decision of making some automatic testing tool that can assert the correctness of diagrams.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-19504:rev-19635:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Cg_pham</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=19504&amp;oldid=prev</id>
		<title>Cg_pham at 07:17, 5 October 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=19504&amp;oldid=prev"/>
		<updated>2011-10-05T07:17:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:17, 5 October 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;accesscontrol&amp;gt;Administrators,,Cem,,Maysunshine&amp;lt;/accesscontrol&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Guidelines]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Introduction ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Introduction ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;At the time of writing this page, we are testing the affection of changing stylesheet manually. This is not a good way of testing, because there are more than 2000 settings in stylesheet, and testers simply can&amp;#039;t re-test over and over again. So, we come to a decision of making some automatic testing tool that can assert the correctness of diagrams.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;At the time of writing this page, we are testing the affection of changing stylesheet manually. This is not a good way of testing, because there are more than 2000 settings in stylesheet, and testers simply can&amp;#039;t re-test over and over again. So, we come to a decision of making some automatic testing tool that can assert the correctness of diagrams.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-6441:rev-19504:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Cg_pham</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=6441&amp;oldid=prev</id>
		<title>Catglobe: add note</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=6441&amp;oldid=prev"/>
		<updated>2009-05-25T06:41:37Z</updated>

		<summary type="html">&lt;p&gt;add note&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 06:41, 25 May 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Then it comes to SVG image format as a good candidate. SVG stands for Scalable Vector Graphic which stores image in XML format. Thus, comparing 2 images becoming comparing 2 XML files. SVG image can be viewed using IE with a plugin from Adobe call [http://www.google.com.vn/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.adobe.com%2Fsvg%2Fviewer%2Finstall%2F&amp;amp;ei=Yg3oSZ-2IsGIkAX4hOWiBw&amp;amp;usg=AFQjCNHNUB67KnsQkkQ1E3ig5-nKYdQOXw&amp;amp;sig2=B5l8uI_MZIOzqKY0OK13lw SVGViewer]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Then it comes to SVG image format as a good candidate. SVG stands for Scalable Vector Graphic which stores image in XML format. Thus, comparing 2 images becoming comparing 2 XML files. SVG image can be viewed using IE with a plugin from Adobe call [http://www.google.com.vn/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.adobe.com%2Fsvg%2Fviewer%2Finstall%2F&amp;amp;ei=Yg3oSZ-2IsGIkAX4hOWiBw&amp;amp;usg=AFQjCNHNUB67KnsQkkQ1E3ig5-nKYdQOXw&amp;amp;sig2=B5l8uI_MZIOzqKY0OK13lw SVGViewer]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;font color=&#039;red&#039;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: there is a limitation with SVG support in Nevron, at the time of writing (05.2009) CatGlobe system is still using a very old version of Neveron (Q4-2007) which does not support for SVG very well, almost diagrams do not work well in SVG mode. However, the newest version (Q1-2009) supports SVG rather well. SVG format in itself contains a limitation that it cannot display 3D images. As conclusion, only develop testing with this article with Q1-2009 or newer version of Nevron, and only test on 2D chart.&amp;lt;/font&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Nevron chart and SVG ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Nevron chart and SVG ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-6373:rev-6441:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Catglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=6373&amp;oldid=prev</id>
		<title>Catglobe: /* NUnit XML Assertion */</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=6373&amp;oldid=prev"/>
		<updated>2009-05-20T09:21:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;NUnit XML Assertion&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:21, 20 May 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l87&quot;&gt;Line 87:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 87:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Of course, references to assemblies (CatGlobe.NUnit.Addins.dll, XmlDiffPatch.dll, XmlDiffPath.View.dll) must be added to the unit test project. The assertion result is displayed on screen like this:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/ins&gt;Of course, references to assemblies (CatGlobe.NUnit.Addins.dll, XmlDiffPatch.dll, XmlDiffPath.View.dll) must be added to the unit test project.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039; &lt;/ins&gt;The assertion result is displayed on screen like this:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:XMLAssertResult.png]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Image:XMLAssertResult.png]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki:diff:1.41:old-5958:rev-6373:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Catglobe</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=5958&amp;oldid=prev</id>
		<title>Catglobe: Create the first version</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Comparing_2_images_for_equality&amp;diff=5958&amp;oldid=prev"/>
		<updated>2009-04-17T05:05:53Z</updated>

		<summary type="html">&lt;p&gt;Create the first version&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Introduction ==&lt;br /&gt;
At the time of writing this page, we are testing the affection of changing stylesheet manually. This is not a good way of testing, because there are more than 2000 settings in stylesheet, and testers simply can&amp;#039;t re-test over and over again. So, we come to a decision of making some automatic testing tool that can assert the correctness of diagrams.&lt;br /&gt;
&lt;br /&gt;
However, there are charts that are generated as images in report system. Comparing 2 images pixel by pixel is not a bad idea in terms of at least having something that make sure our system is still working. But the image comparing have limitation in pointing out exactly the differences (in label, in color etc...)&lt;br /&gt;
&lt;br /&gt;
Then it comes to SVG image format as a good candidate. SVG stands for Scalable Vector Graphic which stores image in XML format. Thus, comparing 2 images becoming comparing 2 XML files. SVG image can be viewed using IE with a plugin from Adobe call [http://www.google.com.vn/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.adobe.com%2Fsvg%2Fviewer%2Finstall%2F&amp;amp;ei=Yg3oSZ-2IsGIkAX4hOWiBw&amp;amp;usg=AFQjCNHNUB67KnsQkkQ1E3ig5-nKYdQOXw&amp;amp;sig2=B5l8uI_MZIOzqKY0OK13lw SVGViewer]&lt;br /&gt;
&lt;br /&gt;
== Nevron chart and SVG ==&lt;br /&gt;
Generating chart image to SVG with Nevron chart control (the main control that we are using for generating chart image) is as easy as below code;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
            NSvgImageFormat svgImageFormat = new NSvgImageFormat();&lt;br /&gt;
            svgImageFormat.Compress = false;&lt;br /&gt;
            nChartControl1.CreateImage(svgImageFormat).SaveToFile(@&amp;quot;D:\svn&amp;quot; + DateTime.Now.ToString(&amp;quot;ddMMyyyy_hhmmss&amp;quot;)+&amp;quot;.svg&amp;quot;, new NSvgImageFormat());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XML Comparision == &lt;br /&gt;
Microsoft provides free tools called [http://download.microsoft.com/download/1/f/1/1f146f9b-2a71-4904-8b91-e2f62d7b64b3/XmlDiffPatch.exe XMLDiffPatch] for comparing/synchronizing 2 XMLs.&lt;br /&gt;
&lt;br /&gt;
In this download, you can also find an XmlDiffPatch.View which process the diff result and generate HTML report. Which looks something like this&lt;br /&gt;
[[Image:XMLDiffPath.View.png]]&lt;br /&gt;
&lt;br /&gt;
== NUnit XML Assertion ==&lt;br /&gt;
The implementation of the XML assertion can be found under &amp;#039;&amp;#039;CatGlobe\Components\CatGlobe.NUnit.Addins&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
There are a couple of methods for asserting the equality of XML (stream, fragment, file) as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
   public class XmlAssert&lt;br /&gt;
   {&lt;br /&gt;
      /// &amp;lt;summary&amp;gt;&lt;br /&gt;
      /// Assert the 2 XML stream for equality.&lt;br /&gt;
      /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;expectedXmlStream&amp;quot;&amp;gt;Expected XML Stream&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;actualXmlStream&amp;quot;&amp;gt;Actual XML Stream&amp;lt;/param&amp;gt;&lt;br /&gt;
      public static void AreEqual(Stream expectedXmlStream, Stream actualXmlStream);&lt;br /&gt;
&lt;br /&gt;
      /// &amp;lt;summary&amp;gt;&lt;br /&gt;
      /// Assert the 2 XML stream for equality.&lt;br /&gt;
      /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;expectedXmlStream&amp;quot;&amp;gt;Expected XML Stream&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;actualXmlStream&amp;quot;&amp;gt;Actual XML Stream&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;message&amp;quot;&amp;gt;Customer display message when the 2 streams are not equal&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;args&amp;quot;&amp;gt;Arguments use for formatting the &amp;lt;paramref name=&amp;quot;message&amp;quot;/&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
      public static void AreEqual(Stream expectedXmlStream, Stream actualXmlStream, string message, params object[] args);&lt;br /&gt;
&lt;br /&gt;
      /// &amp;lt;summary&amp;gt;&lt;br /&gt;
      /// Assert the 2 XML fragments for equality.&lt;br /&gt;
      /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;expectedXmlStream&amp;quot;&amp;gt;Expected XML fragment&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;actualXmlStream&amp;quot;&amp;gt;Actual XML fragment&amp;lt;/param&amp;gt;&lt;br /&gt;
      public static void AreEqual(string expectedXml, string actualXml);&lt;br /&gt;
&lt;br /&gt;
      /// &amp;lt;summary&amp;gt;&lt;br /&gt;
      /// Assert the 2 XML fragments for equality.&lt;br /&gt;
      /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;expectedXmlStream&amp;quot;&amp;gt;Expected XML fragment&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;actualXmlStream&amp;quot;&amp;gt;Actual XML fragment&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;message&amp;quot;&amp;gt;Customer display message when the 2 fragments are not equal&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;args&amp;quot;&amp;gt;Arguments use for formatting the &amp;lt;paramref name=&amp;quot;message&amp;quot;/&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
      public static void AreEqual(string expectedXml, string actualXml, string message, params object[] args);&lt;br /&gt;
&lt;br /&gt;
      /// &amp;lt;summary&amp;gt;&lt;br /&gt;
      /// Assert the 2 XML file for equality.&lt;br /&gt;
      /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;expectedXml&amp;quot;&amp;gt;Expected XML file&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;actualXml&amp;quot;&amp;gt;Actual XML file&amp;lt;/param&amp;gt;&lt;br /&gt;
      public static void AreEqualXmlFile(string expectedXml, string actualXml);&lt;br /&gt;
&lt;br /&gt;
      /// &amp;lt;summary&amp;gt;&lt;br /&gt;
      /// Assert the 2 XML file for equality.&lt;br /&gt;
      /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;expectedXml&amp;quot;&amp;gt;Expected XML file&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;actualXml&amp;quot;&amp;gt;Actual XML file&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;message&amp;quot;&amp;gt;Customer display message when the 2 files are not equal&amp;lt;/param&amp;gt;&lt;br /&gt;
      /// &amp;lt;param name=&amp;quot;args&amp;quot;&amp;gt;Arguments use for formatting the &amp;lt;paramref name=&amp;quot;message&amp;quot;/&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;
      public static void AreEqualXmlFile(string expectedXml, string actualXml, string message, params object[] args);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The asserts are used as any other normal assert methods. See code below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
         XmlAssert.AreEqual(&amp;quot;&amp;lt;test /&amp;gt;&amp;quot;, &amp;quot;&amp;lt;test&amp;gt;fasdfd&amp;lt;/test&amp;gt;&amp;quot;);&lt;br /&gt;
         XmlAssert.AreEqualXmlFile(@&amp;quot;D:\svn09042009_045701.svg&amp;quot;, @&amp;quot;D:\svn09042009_045701_new.svg&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course, references to assemblies (CatGlobe.NUnit.Addins.dll, XmlDiffPatch.dll, XmlDiffPath.View.dll) must be added to the unit test project. The assertion result is displayed on screen like this:&lt;br /&gt;
[[Image:XMLAssertResult.png]]&lt;br /&gt;
&lt;br /&gt;
The HTML report is generate using XmlDiffPatch.View.dll would looking something like the first image in this article. There is a setting in .config file for shutting down the report generation (in case, we just want to know if there is an error and don&amp;#039;t care about what exactly are the errors). This can save some speed for running the unit test.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;!-- For XML Comparision --&amp;gt;&lt;br /&gt;
      &amp;lt;add key=&amp;quot;GenerateXMLComparisionReport&amp;quot; value=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Possible optimization == &lt;br /&gt;
For HTML report, there are possible optimization as&lt;br /&gt;
# Add jump to next different.&lt;br /&gt;
# Display line number.&lt;br /&gt;
# Skip same parts with some text &amp;quot;Skip xxxx lines that are the same.&amp;quot; to reduce HTML file size and speed up comparision.&lt;/div&gt;</summary>
		<author><name>Catglobe</name></author>
	</entry>
</feed>