internal async Task DeleteRefByNameTest() { TreeNode tr = new TreeNode.Builder(new List <TreeTreeReference>(0), new List <TreeBlobReference>(0)); await trrepo.PersistTree(tr.ID, new IVO.Definition.Containers.ImmutableContainer <TreeID, TreeNode>(trx => trx.ID, tr)); Commit cm = new Commit.Builder(new List <CommitID>(0), tr.ID, "James S. Dunne", DateTimeOffset.Now, "Initial commit."); await cmrepo.PersistCommit(cm); Ref rf = new Ref.Builder((RefName)"v1.0", cm.ID); await rfrepo.PersistRef(rf); var edrf = await rfrepo.DeleteRefByName((RefName)"v1.0"); Assert.IsFalse(edrf.HasErrors); Ref drf = edrf.Value; Assert.IsNotNull(drf); Assert.AreEqual(rf.Name.ToString(), drf.Name.ToString()); Assert.AreEqual(rf.CommitID, drf.CommitID); var errf = await rfrepo.GetRefByName((RefName)"v1.0"); Assert.IsTrue(errf.HasErrors); Assert.AreEqual(1, errf.Errors.Count); }
internal async Task PersistRefTest() { TreeNode tr = new TreeNode.Builder(new List <TreeTreeReference>(0), new List <TreeBlobReference>(0)); await trrepo.PersistTree(tr.ID, new IVO.Definition.Containers.ImmutableContainer <TreeID, TreeNode>(trx => trx.ID, tr)); Commit cm = new Commit.Builder(new List <CommitID>(0), tr.ID, "James S. Dunne", DateTimeOffset.Now, "Initial commit."); await cmrepo.PersistCommit(cm); Ref rf = new Ref.Builder((RefName)"v1.0", cm.ID); await rfrepo.PersistRef(rf); }
public Errorable <Ref> Retrieve(SqlCommand cmd, SqlDataReader dr, int expectedCapacity = 10) { if (!dr.Read()) { return(new RefNameDoesNotExistError(this._name)); } Ref.Builder b = new Ref.Builder( pName: (RefName)dr.GetSqlString(0).Value, pCommitID: (CommitID)dr.GetSqlBinary(1).Value ); Ref rf = b; return(rf); }
public Errorable <Tuple <Ref, Commit> > retrieve(SqlCommand cmd, SqlDataReader dr) { // If no result, return null: if (!dr.Read()) { return(new RefNameDoesNotExistError(this._refName)); } Ref.Builder rfb = new Ref.Builder( pName: (RefName)dr.GetSqlString(0).Value, pCommitID: (CommitID)dr.GetSqlBinary(1).Value ); Ref rf = rfb; const int offs = 2; CommitID id = (CommitID)dr.GetSqlBinary(0 + offs).Value; Commit.Builder cmb = new Commit.Builder( pParents: new System.Collections.Generic.List <CommitID>(2), pTreeID: (TreeID)dr.GetSqlBinary(1 + offs).Value, pCommitter: dr.GetSqlString(2 + offs).Value, pDateCommitted: dr.GetDateTimeOffset(3 + offs), pMessage: dr.GetSqlString(4 + offs).Value ); // Read the parent commit ids from the second result: if (dr.NextResult()) { while (dr.Read()) { cmb.Parents.Add((CommitID)dr.GetSqlBinary(0).Value); } cmb.Parents.Sort(new CommitID.Comparer()); } Commit cm = cmb; if (cm.ID != id) { return(new ComputedCommitIDMismatchError(cm.ID, id)); } return(new Tuple <Ref, Commit>(rf, cm)); }
internal async Task GetCommitByRefNameTest() { await createCommits(); Ref rf = new Ref.Builder((RefName)"v1.0", cmRoot.ID); await rfrepo.PersistRef(rf); var erfcm = await cmrepo.GetCommitByRefName(rf.Name); Assert.IsFalse(erfcm.HasErrors); var rfcm = erfcm.Value; Assert.IsNotNull(rfcm); Assert.IsNotNull(rfcm.Item1); Assert.IsNotNull(rfcm.Item2); Assert.AreEqual(cmRoot.ID, rfcm.Item2.ID); Assert.AreEqual(cmRoot.DateCommitted.ToString(), rfcm.Item2.DateCommitted.ToString()); Assert.AreEqual(cmRoot.Committer, rfcm.Item2.Committer); Assert.AreEqual(cmRoot.Message, rfcm.Item2.Message); }