From 13189e0a556d8f429b5b23e4925c5ad4d214a82a Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Fri, 23 Mar 2012 17:36:37 -0700 Subject: [PATCH] tests for compositing operations --- tests/python_tests/compositing_test.py | 28 ++++++++++++++++++ .../python_tests/images/composited/clear.png | Bin 0 -> 334 bytes .../images/composited/color_burn.png | Bin 0 -> 3951 bytes .../images/composited/color_dodge.png | Bin 0 -> 3608 bytes .../images/composited/contrast.png | Bin 0 -> 3099 bytes .../python_tests/images/composited/darken.png | Bin 0 -> 3950 bytes .../images/composited/difference.png | Bin 0 -> 3971 bytes tests/python_tests/images/composited/dst.png | Bin 0 -> 2310 bytes .../images/composited/dst_atop.png | Bin 0 -> 3130 bytes .../python_tests/images/composited/dst_in.png | Bin 0 -> 2050 bytes .../images/composited/dst_out.png | Bin 0 -> 2234 bytes .../images/composited/dst_over.png | Bin 0 -> 3455 bytes .../images/composited/exclusion.png | Bin 0 -> 3998 bytes .../images/composited/hard_light.png | Bin 0 -> 3950 bytes .../python_tests/images/composited/invert.png | Bin 0 -> 3848 bytes .../images/composited/invert_rgb.png | Bin 0 -> 3806 bytes .../images/composited/lighten.png | Bin 0 -> 3911 bytes .../python_tests/images/composited/minus.png | Bin 0 -> 3745 bytes .../images/composited/multiply.png | Bin 0 -> 3950 bytes .../images/composited/overlay.png | Bin 0 -> 3995 bytes tests/python_tests/images/composited/plus.png | Bin 0 -> 3834 bytes .../python_tests/images/composited/screen.png | Bin 0 -> 3912 bytes .../images/composited/soft_light.png | Bin 0 -> 3991 bytes tests/python_tests/images/composited/src.png | Bin 0 -> 2273 bytes .../images/composited/src_atop.png | Bin 0 -> 3174 bytes .../python_tests/images/composited/src_in.png | Bin 0 -> 2049 bytes .../images/composited/src_out.png | Bin 0 -> 2196 bytes .../images/composited/src_over.png | Bin 0 -> 3479 bytes tests/python_tests/images/composited/xor.png | Bin 0 -> 4165 bytes tests/python_tests/images/support/a.png | Bin 0 -> 1383 bytes tests/python_tests/images/support/b.png | Bin 0 -> 1376 bytes 31 files changed, 28 insertions(+) create mode 100644 tests/python_tests/compositing_test.py create mode 100644 tests/python_tests/images/composited/clear.png create mode 100644 tests/python_tests/images/composited/color_burn.png create mode 100644 tests/python_tests/images/composited/color_dodge.png create mode 100644 tests/python_tests/images/composited/contrast.png create mode 100644 tests/python_tests/images/composited/darken.png create mode 100644 tests/python_tests/images/composited/difference.png create mode 100644 tests/python_tests/images/composited/dst.png create mode 100644 tests/python_tests/images/composited/dst_atop.png create mode 100644 tests/python_tests/images/composited/dst_in.png create mode 100644 tests/python_tests/images/composited/dst_out.png create mode 100644 tests/python_tests/images/composited/dst_over.png create mode 100644 tests/python_tests/images/composited/exclusion.png create mode 100644 tests/python_tests/images/composited/hard_light.png create mode 100644 tests/python_tests/images/composited/invert.png create mode 100644 tests/python_tests/images/composited/invert_rgb.png create mode 100644 tests/python_tests/images/composited/lighten.png create mode 100644 tests/python_tests/images/composited/minus.png create mode 100644 tests/python_tests/images/composited/multiply.png create mode 100644 tests/python_tests/images/composited/overlay.png create mode 100644 tests/python_tests/images/composited/plus.png create mode 100644 tests/python_tests/images/composited/screen.png create mode 100644 tests/python_tests/images/composited/soft_light.png create mode 100644 tests/python_tests/images/composited/src.png create mode 100644 tests/python_tests/images/composited/src_atop.png create mode 100644 tests/python_tests/images/composited/src_in.png create mode 100644 tests/python_tests/images/composited/src_out.png create mode 100644 tests/python_tests/images/composited/src_over.png create mode 100644 tests/python_tests/images/composited/xor.png create mode 100644 tests/python_tests/images/support/a.png create mode 100644 tests/python_tests/images/support/b.png diff --git a/tests/python_tests/compositing_test.py b/tests/python_tests/compositing_test.py new file mode 100644 index 000000000..e06032c53 --- /dev/null +++ b/tests/python_tests/compositing_test.py @@ -0,0 +1,28 @@ +#encoding: utf8 + +from nose.tools import * +import os,sys +from utilities import execution_path +from utilities import Todo +import mapnik + +def setup(): + # All of the paths used are relative, if we run the tests + # from another directory we need to chdir() + os.chdir(execution_path('.')) + +def test_compare_images(): + b = mapnik.Image.open('./images/support/b.png') + for name in mapnik.CompositeOp.names: + a = mapnik.Image.open('./images/support/a.png') + a.composite(b,getattr(mapnik.CompositeOp,name)) + actual = '/tmp/mapnik-comp-op-test-' + name + '.png' + expected = 'images/composited/' + name + '.png' + a.save(actual) + expected_im = mapnik.Image.open(expected) + # compare them + eq_(a.tostring(),expected_im.tostring(), 'failed comparing actual (%s) and expected(%s)' % (actual,'tests/python_tests/'+ expected)) + +if __name__ == "__main__": + setup() + [eval(run)() for run in dir() if 'test_' in run] diff --git a/tests/python_tests/images/composited/clear.png b/tests/python_tests/images/composited/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe9ab37631ae5bb0fad9069c0d8ec0abca560fe GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$2RR)5S5QV$R!xh9J2^3%>fl g&E{ADWR74^!OUpGz-aR}m=hETp00i_>zopr00S-(%m4rY literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/color_burn.png b/tests/python_tests/images/composited/color_burn.png new file mode 100644 index 0000000000000000000000000000000000000000..89339a678d085c0c49b14cf9f3d7c2450732e1f2 GIT binary patch literal 3951 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 Ymf=v|3}ZUz^37bnbj707-0k6i0hXML9smFU literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/color_dodge.png b/tests/python_tests/images/composited/color_dodge.png new file mode 100644 index 0000000000000000000000000000000000000000..19363cc50257f3dac2a6786ef15c2d20d42fe886 GIT binary patch literal 3608 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 g_&0AqK{1 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/dst_atop.png b/tests/python_tests/images/composited/dst_atop.png new file mode 100644 index 0000000000000000000000000000000000000000..53a56f13a7fb9606d97f601d13c51e8976ce582d GIT binary patch literal 3130 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 RdgGUA-@|_1jfb%L{{m+^=NbS2 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/dst_out.png b/tests/python_tests/images/composited/dst_out.png new file mode 100644 index 0000000000000000000000000000000000000000..065b7762a13bc2d82caea95175aab69ec3c24a47 GIT binary patch literal 2234 zcmb7G`Cn3b7rsa$u251^8k&{bi~(htJLse>Q)-jjlp;u}^O@AbR8kVxT+`Hw#xSjU zCmT1^)LhU^Oi0O`_f4~0bBWYkklaz;d;JgQ{&Mf3M>q`xP7!6>|=~G9tgVofF$&*zy zOVe0PN9D^Uip}6!6G}_;6@#;weP=5f(1oi1n`@55jWl-l*)YNLd{U}UycqpwCa-s( zFS&8{*yvioMd>%DafZvI);BJSr4~r>hE;R<_#u2*X?K@Xqk7{Eg~oY@R61k#cf=jJ`e9S>Bu?$vYf%9{@qS!qc%yChB0*HxD<-w%qK7c{iOIOx7rW^UaJ+ zccQg9-t1&g)LNzSs@F>JFw#2b@@* zc|Ql94jv8TYYQQ17`lYn_3{Fn++whFvWo(f?*Vn0zvuzRSA<%JZvx-Ebrt?k&a-Ry-b8fqy?NnH|=`4hLFi6hTs`HhQen?Cqq9f3!bRyvecn8;r}cRZMz2 zgr={xoVnb`OA3)!uTueSHu3z8B_6*2zzFCLsN!?beIQ0^dFe5YE`f-5kBy~{vr61_ zW-*^F2-pHnP}7<9S8$$TvVRTU%1*F5WM1^cOuZ4ARwtMjTS)Us(-BT z@Zq0tUG4VbfgpuR9~BzYBrJIifY^<#3Pz*{4Bj?_sOa@)#)B>7TvwvDMXs1KC$5{iLvsn=-viCX>*cN~(6L{> zAKn_c8$d*^xbsW!!xgl6SFC6dAksOc)D8&dTYp9##KgH#yRZsQYg?Rs9UTU9+4?D# z*gW}{S1Eq*fMJAH5vZ;3cRydOe+efqPD{Uy22T6bg*YO81=A&AT^I z$9n`hfcSdZZg?f!1~SwE9p$KA>*3*OJ!qrfcPuG2MEJdc zy3f}Vh<`)1h;8e4XF@$*it4HvA-bYmlx}RD+XuiGDvgF89KxD3z-_CLVJg%DuJ%`& zmxv2!RI!ZiM`3k4Q|##iA~{2o)R!92?Py~@-v`r2zal^UK!0AJEOZJ-_VC&wA?b8D zqkbsfmOA|KJpdt^e$5DLgaU9@*}6|XB-*)E3_Fj=!0lGdEr@pI7F;;CJyfOhCRzd= zpzS9na6O1egSQKRE~Nhr9=`tpSEgrm&NW?fIa>$a3vKBia{Y zarMfUh3#{zPM=~CF1+)=en|75@QoH}0wkX1XIh4gie6%{^p#dL1PAjYR z)RFaCu&_xK6t%$HSmcv@LD6f1I`~%eOogt_1orL}jPB}UsFLR*A{U6kDFC72? literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/dst_over.png b/tests/python_tests/images/composited/dst_over.png new file mode 100644 index 0000000000000000000000000000000000000000..f2dbf949450239738dd55b0d3f6639f2dbdd7859 GIT binary patch literal 3455 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 D4y$1J literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/exclusion.png b/tests/python_tests/images/composited/exclusion.png new file mode 100644 index 0000000000000000000000000000000000000000..3391778b34a313514be3b1fbbae27a5154aa09cd GIT binary patch literal 3998 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 je%ZPI=S~U8E|X&N-HDWHsP&P4c7SMT$r$ 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 Nlk2w(>h$i!{u>P~O|k$0 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/invert_rgb.png b/tests/python_tests/images/composited/invert_rgb.png new file mode 100644 index 0000000000000000000000000000000000000000..607ce6921af62182c6ef52db2e88622fbcda9a59 GIT binary patch literal 3806 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/minus.png b/tests/python_tests/images/composited/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..b7665b1c9934caaea3854d68bbb5a37c0086a265 GIT binary patch literal 3745 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/multiply.png b/tests/python_tests/images/composited/multiply.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d8be583cbb61595e4307d4dd85c2226928eb69 GIT binary patch literal 3950 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/screen.png b/tests/python_tests/images/composited/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..697da32b11aaf840a2f2adfa5d155f4189b0bdb9 GIT binary patch literal 3912 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 fi4g>9HQH0@8ZUFXFj19yB9CoKfvmF$58Xo< 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 literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/src_out.png b/tests/python_tests/images/composited/src_out.png new file mode 100644 index 0000000000000000000000000000000000000000..ab0641b18ba18e9d951055ccd714de744208ddf0 GIT binary patch literal 2196 zcmb7Fi$9ZXAHOw+t(IAG1M%jB$^y@cu8|eq+U72W)I6Dd7e2GvPuq} zoGOP-dRf>+A*UR}Xb$rbt09MtJ@@VN{sYhb`COm-zJJ&C`~JSa!Jq*>I(Y4G;&b{TQv&}q(`je6GTlYY8>-d0!E{N0Z9^TNDIbMV{zW-urW z)%Uo^Gg3T1`<*M64zcp>o8o3x`hx}U(4f_S^fP{n#o-UtMt6yq__xKccHF0}kLQJ4%Jc^Ts`Jy~fRWVe-HKS>ZJV3VCl(Dx z;TQqxT)7GEqoJ5>%aF6aHtu-iH?pXnlX;1hQJF-YYQPp1nHt+sI3sA|MydNljBbH#b?oz};fcTeYD-xbg4!N)2{(uaKd zWd+b#=FV0s5;j+&pYr+GU!@CXbN@M-8WhHbw)Siq%YQZTI+idB+@9Eh(+S#Q3+*xr z)J8TwT$StAk=+!7p3zs8hE9gAiP*q8njvhDnNY;(d`DCtAv>rXa8RM;;Fc82%=2vk z<%wJ`;{CV~BoF8{?B~CQ^%{QfQ^4Xa66c8acwOY#;++RA>1u>&hMU|!bWJkaP|1VU zkMdn^ZD${T*c84WJLHz>T1*|<5~+GevD)#-l$S~o z3qe;8y~%b2@e1N&EDkXB0hssMoOtEj##bW!_dyP$jD%kJ2w`@bEdhuvH zhcz^w7Je;etOL&}8Fd!qL;5;~I4A|8kWBaI(7%D<)>S;P3sxhb-Dd+uAl2f=SrGo) zN6=@8*=kHJd~aW)aY}H?vADW#jgS-Xfa+Mf5(`lTLh%TAWDXLJd5VS;talTwImy>) zJfoCd=y^JTrOwq%{6X_BHDt>!`L_v@+sZ97b-BSezIIwSgQ%DoGz83 zFg`MMYX_V{7k_rE1*-;lzZ{RK&~j zRA|4AdI26fHjF|J4cTx?+^?++EPI?-?UoU39cVg1Ha@+m!kvhms$YS6Etqk4A(+t2 zbOwthEza3!@K}rd+GWafh!^TYRYahebeckZ)EKxpIRRoYf4~gdf2v^8D^|!IGL&#A z?jEHnKf{vp|Hig|CFPlqvgNo_k#)=(wuD<1j~=8~=gmiQ+CG;r+J{P-HC@D{Z|Xj; zG%H$)Qo{rv17ug0YS@NeGl5X-sK4Sg7HicBr{19mztuD5&rJ8-OtgS#yCinHl6O=c zg6s`fR?hI*jGn0$yX=8Tjx8#5<+8+96tCeO5rEQ;>=hL8Q9dazWsLEumSA||Oti*q z*_W!#{_{|2-Aa~`E5#z6DztzY1D56Zw;xH*92YXxeOmc7+Acx^uDVajMl1D*p7BP6 zso~NPCn%(Qb!ZBkHH}|)pWB+GM_QDWBz1)?yezo5)A3hfH|E~0C)_SjN{%9TZT&hD z#AJbOuX+;>^6xw20bf)mdZW0?BQ^D?lt?}W8Xn4A9B8=)_r zHBPVBF=gX1db$H6H(Vm&_76tnll!tq4<*n4*fKI4;;trXGikhdmsLEhw@p0Vd*{CT z!~WXF*szRvIfm}>v8%U|=zV+ag9kXweA>s3Z+G=a4gVMw>u+8Z$tq-TwO-tklcESw mhV_?3{x{84{?*kD07=7xdVAo=V0Lo{q-lAaYX0IVE&3nhj2CPG literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/src_over.png b/tests/python_tests/images/composited/src_over.png new file mode 100644 index 0000000000000000000000000000000000000000..9efe5be5ad96be8b33d8390803b7aababf5fd5c6 GIT binary patch literal 3479 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 O8hz~>S_K-mLH_}M=9N_d literal 0 HcmV?d00001 diff --git a/tests/python_tests/images/composited/xor.png b/tests/python_tests/images/composited/xor.png new file mode 100644 index 0000000000000000000000000000000000000000..af5bb3351fe92e1cb867c04b1bb53209117fbbd8 GIT binary patch literal 4165 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 literal 0 HcmV?d00001