@@ -122,6 +122,31 @@ public void CanRetrieveObjectsThroughOddSizedShortShas()
122122 }
123123 }
124124
125+ [ Fact ]
126+ public void CanEnumerateTheContentOfTheObjectDatabase ( )
127+ {
128+ string repoPath = InitNewRepository ( ) ;
129+
130+ using ( var repo = new Repository ( repoPath ) )
131+ {
132+ var backend = new MockOdbBackend ( ) ;
133+ repo . ObjectDatabase . AddBackend ( backend , priority : 5 ) ;
134+
135+ AddCommitToRepo ( repo ) ;
136+
137+ var expected = new [ ] { "1fe3126" , "2b297e6" , "6518215" , "9daeafb" } ;
138+
139+ IEnumerable < GitObject > objs = repo . ObjectDatabase ;
140+
141+ IEnumerable < string > retrieved =
142+ objs
143+ . Select ( o => o . Id . ToString ( 7 ) )
144+ . OrderBy ( s => s , StringComparer . Ordinal ) ;
145+
146+ Assert . Equal ( expected , retrieved ) ;
147+ }
148+ }
149+
125150 #region MockOdbBackend
126151
127152 private class MockOdbBackend : OdbBackend
@@ -134,7 +159,8 @@ protected override OdbBackendOperations SupportedOperations
134159 OdbBackendOperations . ReadPrefix |
135160 OdbBackendOperations . Write |
136161 OdbBackendOperations . WriteStream |
137- OdbBackendOperations . Exists ;
162+ OdbBackendOperations . Exists |
163+ OdbBackendOperations . ForEach ;
138164 }
139165 }
140166
@@ -286,7 +312,12 @@ public override int ReadStream(ObjectId oid, out OdbBackendStream stream)
286312
287313 public override int ForEach ( ForEachCallback callback )
288314 {
289- throw new NotImplementedException ( ) ;
315+ foreach ( var mockGitObject in m_objectIdToContent )
316+ {
317+ callback ( mockGitObject . Key ) ;
318+ }
319+
320+ return GIT_OK ;
290321 }
291322
292323 #endregion
0 commit comments