From d3eb02bd037e35dd96f0a68ea16159f49f2c12c2 Mon Sep 17 00:00:00 2001 From: Matt Diephouse Date: Sat, 6 Dec 2014 09:38:33 -0500 Subject: [PATCH] Make Signature Equatable and Hashable --- SwiftGit2/Objects.swift | 13 ++++++ SwiftGit2Tests/Fixtures/simple-repository.zip | Bin 14874 -> 19678 bytes SwiftGit2Tests/ObjectsSpec.swift | 43 ++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/SwiftGit2/Objects.swift b/SwiftGit2/Objects.swift index 170d9be..cde891e 100644 --- a/SwiftGit2/Objects.swift +++ b/SwiftGit2/Objects.swift @@ -36,6 +36,19 @@ public struct Signature { } } +extension Signature: Hashable { + public var hashValue: Int { + return name.hashValue ^ email.hashValue ^ Int(time.timeIntervalSince1970) + } +} + +public func == (lhs: Signature, rhs: Signature) -> Bool { + return lhs.name == rhs.name + && lhs.email == rhs.email + && lhs.time == rhs.time + && lhs.timeZone.secondsFromGMT == rhs.timeZone.secondsFromGMT +} + /// A git commit. public struct Commit: Object { public let oid: OID diff --git a/SwiftGit2Tests/Fixtures/simple-repository.zip b/SwiftGit2Tests/Fixtures/simple-repository.zip index 4a679ffb1cd2cc55c2c3c3891066b67c84ad561e..dd0c87c60279dc351d764f40e5549fdf21ac56e0 100644 GIT binary patch delta 6130 zcmb7H2V7HE+s|NxKrmGl2ty*GtnAzjKmiS?47UZ#D47KZ+YLq(#D(i>6-DcSR}o9G z6mZl50xn#2P_$K`uUaW8sJN>5opVEy8}$3WpYXdR+~=I<{GWOL&yLJ{g+$uqaIzVd z0DnRvR&Jt=bbL5y#q>7t^bqX`MqvaHM*2Dy0YMi|Xh)!cUntz{$A$vE@WlmR_LTGC ztf=wcVNKyz#?*sj_9>5Z1=-=9A_ef;q+lYQD7*-wYs z6a|;BXP+uxe9X&c-8-5!&Gr)e@g2>}gI$lRZ{;-~Ky+?-xOD&f1OhsVDTC-xYqC3f zjOjxL5Go%r&4`%a$3`R>f@1JHYUYk;@lm<_+vPAak8asjnY~8ZA@}%pXXKhyiY1ly z_Y*{gM}rr*pD1m=yK}0yUCCj~>p>L3wznTHa7E9SEf~YylC!m$`tS&H$43~yFLUnL zJBwM-1r@bL^1+Ww!tbtbJ;doL2)wzC-P3$#aPuFDWsHN-mw%u6_?4D-c9FAU{hO>K zxhFPp2e}0tPKnytqj;6IcNMCTMNV6LCuU#)?Qrbu!qA^iB3Ggt9*%LkkyyH6Z}`y- z(^k%}ubn3hcD8M5xuIQAdNhFRpFSxmW>5Cwg0t?qyq;@+ZAr>4BIIxJXOv|xKmGMi zv_tvN#E%n?y^FHSl@zv?E!gI#_~`WF!RF>4ZKiHb`lIIiCC_HvqRw5BIb>|o5>@cE z4gdWnyXJTD$!zxPb~4OCx2)ucE<^&s-Hd?l@o+-#c{`ygLaGZ4Jai@A(Yn$Qfc)?p z9xxJ0>-y3H)`l(&yoi+{SOxX{K{oAS0EKj|JUJyZQJv0Gq|1|)iBSDXuo*ruuL{nM zvaRFV1hqL%Y_ncg)cW3mX|`{?uk*0_@;gkkyj1P+iWkM=tW_V)zrX3ZcNXP}pS&t( zT&yPahkEOC&V}@+r3)N1*^xajzLsoh82NV5&e_uC%t4AS)%=R!{G*G1dC6|N;mVGj z7L{}47OCc+MbTO!v_AM%OlLYkx)(e~8$b!8ONWm!Nu{kQ^>#KD zukx%GFX^W7Q5%=PlS};D|2eUZx;!7D*S(H=J~meD*6@ugD(#qRisXRXZd5YgV;pUG zZTp$j)_d~imwzqnEgI~4&Li*=61e5X8?(lp2~*vMwz*o??<{eN$-gVAx~F}US(Dei zHa#j~;r-K{w*Ox4_;|Z)%7#Nc+xhgVPNnTX%N(MYPxf9NP@dOlx5E1L-k626GxD?A zN}cDe6vY*mo%R=~qISK$&A6bFU2LtSO^;)ihqKn*>drAfWdPrBolvMe0n}r{RRTpwEYbb381Z*LC4Mzgn3)`Ku5`8=aXpW93Hg z+<$N6?c#iBWA@rdPu-t;sOida-&r$9#M%cBt-LyLDt*k+bNA#~9sK62F>TRb4|w}1 z`_Kckl{S{IRHV*pOkT1p>(p;q%ffH`j-0(YE9Y)cK=Ns5N5`5|OVe=C)a5ITrrbmL zNxRlb9e}jlgX_lUar7y_;gh6>i+Vk{La<1xmTCl2C10aJq-qsUrBMjfVu@NMMz{zf zN5lwUq7m@)Z4;!C}3>rtDpN@oD_!zz)uk2Tz_a-F9zjvPBsw=N5Jq)ZD$~ zBn8k#eTmo)obdk#r{xPdYMxriRjb7S1)`Fw`C_St3m&PIE0U{3Dyc*%kqWsua9HgT z%LvmyE+p<+A4#p_(nI4O*<}zt3WZv?eS7@>T)1L_X3U91pSg>*C%Q@HuFq;Mzb!nM zmblEt_0BL-;^yL6(`t9b4HU&{E4R|~R@}I<$=X&~6`Gy6sg!6hi>&V0Wra*zzuSM! zoD1JO*N=R4(8cS{H-Vh4eYaajpFi+J&5YK7r%NCF@WaJ`_%oR!>RW#tka~0C?5gGu zDm3s>hx9P*`Iu>s)p_#eum75_9d*-Q^iyOCjJ3?-5i0m15MrfNt^u!Aa;}E2)_Y8^idamD z!8{ghTjxd(iOX1XY?&s=Vtc)VJ-df)_n#zt7OkZF-Ot@5c5nNK|9Wt?stcXAm-$zD zlccLEj#&)*&9-VnfOfN!mvmk3{H}GP15C%N2JhMSKPDdWY#-%#(YNu%s_dq}74r+n zQs+!**dJL^=U;7cb!K&`^NBNaAHP2zc&hm4KZ0YPtXOb+ro^3jsQ1y}_lmg!rgU3i>I>U%MR|$=oANy5*S9OMAnXd(lxMGPw zD$*c4iC869s}PMyEKm#OJb{8IK@RT1L|`+%!PogZZz6hya}+*8yZ zUj3hIUP&*D&Rq3H6Vw{nAMwoYi{j)Y*$fTwWap#Czu!cR*!^-ZiGIV<_u_KzJ^t$0QSY1*a)c%EN-P7s~<>W z^hCzk=inlk4PX&huHtePN`*+F5^+T$jY^}ItE57{oX3|V5|u72f)K8GjN_n%i!Lrh|`;po4w3JEQ{iU>D(9N>qni|iesjr{^I`8J14{0?M{#NZ6 z*SPh&c~(_<6T5zDx!M((d1`;u*oypLERSz{nYKwXXZ6&&mar4FPMPDh?u3~A!h#%D z^VL{++j;Hylsi}0XQA1J(Od4$2PVU=XAG^b2zWy!nAQJR4e$gKj#@3{3nU1F@I+i5 zUn$ifAjnD)SB`Ln3bB+cR4ElozCNx%8|Y|mKKmN3|JHcl<9AmHa2x($Fa$F6c)uCzONG%rRDhay&y(_6Qcn@8U;1!am23%)mZR zjZDTqIi9-zOFXw@{|9+Z!sv03mphumbV9FrSvf-6Y;aW2*zwCfJi!Wcv{gd!(lHr* z@fsuFpQ~^;dwYC_r@%{1&r<~a2}lIO8y|_lCL4Jq0^!$02ndSsaB^k6U8P<4T9tM9 zATk?k>KawuDlZTj_!v(G(J^62o&-7}BWZ5x95pLlor=bJ50m3VCJ+fD`4a^q9*@tD znDDbOV!{LwGJ(&pj1Ww$j))*r4-97%JC>vqu_JpMvpC+L90@3!$&o@}=(Nw@;*G#q z{Vo2*#-hJ^hhz6FJ|?=J3kE7M$Z)mLH2p*scY$ZSf@>4n_UC~&B~9{H3$;9dQ0{Gd z_(r$8Ga8<(J$N(c$>Sx&{d4}k=&4BhAJLwZj@+jx#Bhe$D}z}X3% z!WxWHSq#!~A|?oA4G=)B&_{T!VAKooNy<3j2w>WS$BAGA{$f8t#W^$49M&+y{MROS zLC>*liI>1z2HM4y$IB(gm~0gl5^ECs@iW(MIg_F!z^bvB3i z0wr=p1}&2~3{r=sZXt(?uIK0$!UIkKQIu7m$jPw7oy#C;X!;!kQ|DzQvNPl`t7k+T z0jvhAQtA3t=#TUPICR}WSmn?sv_d&NhC#cW#~__?(usgoMZB**>q5}VLv+(4fshD1 z=WOD_-DoS%9djWFI0{`DE3qX-Gl5zsswM?AOC!)UK7+Imlb{Frws7`DH%XY-hKgYr zjufFexCyWw*pP$|B`k5=U`22C_~dBgkkQ$M3$m$?1w zc_dE%li+&20=ifa5LPrEAnbhj*$2TXD9&+2(-3TE3+d1DDTbj9uML`upCMQ#+Isu6 zF|d%q`p55urr>$I)MRfEdR>GeVSTP!Q3%j3qix3Szengq^7O>~$U!JhdN&vk*DZy- z{w-KK&#=@Vn*(%Fg>wKNDp(zY=jr2dP>1I<7<9XXsv_+u1$&` zAoqGBjEi;M2*Sd%VN+N)^(tgvFduv#6>N#nTT~ytWBoCjty^vMt+7esnWrhNZwxwQ zU%Y#8t~O z;KGO~#lRl%xM1(X(>YUIU$ON%WM9Bj`=6x4rH>HC6&NYV7z~n$nHH8&t zQ1Jys(r^&g@+=Trk~6mt$pEb52O}KP9Q`Y6^n1h`dwmwX&f@9)Kvj$MC4mkVaY#)D z3A%oyPv5n&7YLMm!xoLyuq7A)ccqv?sx(N^Nn#x#)rvW!bb)@8ZBnxFZkTR^=7?FO zdV>_@NUY3Z>O;X$?0y&`#I|1ZvUJp0YP{%8{hy#;2w5ss_&KHl`!t?Ka&axEIHv-y zz#{b1W(`{-WUlx;gUuSx5tv-NfiQ`}pOO95t+Gdx8|JJCduFc)kI+i!%+$6n(g_d*!_|}=$S}lUD3@btAFgERBsz_d$U@>;>suI-FbpM@BNBzGA}(CIq*gPA@$L=nuUdyZ89>FtBv>MOVCK3 zK~HH27U_#(eH!4H-XuVkblubo>BOOf(vaPdIP5JOkIGM4Q>f*4l3J{dyZx7h5q75g zx$hL0U2Lemn0v4{=ho$#4`8pcx?4it_3wRR99myhzCqUC(U&7~+Ct-=e^ybwHfxHMefQM(Bf1SEkKmpD zG}=D61{Hr0%4`#%Ws;FlCdLCy8R(m28B_j*$$9_R@*m5NGCr~VHlrb_;%Q4{K??Pd z`F3dVn?!^y@U?Z2^ml4%tpFW_0^6#De#;1!VSj^QGKT^B>^ZS_KbaNcbNqTin^6lx zp=8+S5GKUnpghm&!FM567!?XQZMG7}<96!e_E}Ss9$y9J2j#QMLY4`=#Jzdua2ohYypCE7SL! zb|X?06IRoVO2CT>Y|hUU5mkX!uMP(C&3gO~Coc_Q&uCG1_E#74ashUiSA;!gfUhtW znp_&@9tA$P8jib?h=g!%6U>+ApYPEy z$F&I7!S7myj`U7eojB7$G*hBCu+O7nc4r`WHBvpP1dkRe4P5bJA%jXmzvMH$ecfm*z%*HGy_gbZ z)8x!~Lp(BM_(W1ZI^oPw^ zVrsxU1dMzHZBQzSn=vVNMNLB?5r0uyyn4W055!IXz67j6MznVPWGBqDeO=xZk`}4n zxQ7dfX&tEz^Wo#TlgLw7zPvU*t-nzmX<2ci_-MzZN;RQWO4Gbz-^@A1xm6YMRb$mF U4T;2