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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }