mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-04 20:29:08 -04:00
feat(reference): add ability to compare references
This commit is contained in:
parent
1f0201d259
commit
7b6e0c36f6
3 changed files with 30 additions and 0 deletions
|
@ -381,6 +381,12 @@ Pointer<git_reference> setTargetSymbolic(
|
|||
}
|
||||
}
|
||||
|
||||
/// Compare two references.
|
||||
bool compare(Pointer<git_reference> ref1, Pointer<git_reference> ref2) {
|
||||
final result = libgit2.git_reference_cmp(ref1, ref2);
|
||||
return result == 0 ? true : false;
|
||||
}
|
||||
|
||||
/// Ensure the reference name is well-formed.
|
||||
///
|
||||
/// Valid reference names must follow one of two patterns:
|
||||
|
|
|
@ -253,6 +253,15 @@ class Reference {
|
|||
/// Throws a [LibGit2Error] if the reference has changed from the time it was looked up.
|
||||
void delete() => bindings.delete(_refPointer);
|
||||
|
||||
@override
|
||||
bool operator ==(other) {
|
||||
return (other is Reference) &&
|
||||
bindings.compare(_refPointer, other._refPointer);
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => _refPointer.address.hashCode;
|
||||
|
||||
/// Releases memory allocated for reference object.
|
||||
void free() {
|
||||
bindings.free(_refPointer);
|
||||
|
|
|
@ -523,6 +523,21 @@ void main() {
|
|||
});
|
||||
});
|
||||
|
||||
test('checks equality', () {
|
||||
final ref1 = Reference.get(repo, 'refs/heads/master');
|
||||
final ref2 = Reference.get(repo, 'refs/heads/master');
|
||||
final ref3 = Reference.get(repo, 'refs/heads/feature');
|
||||
|
||||
expect(ref1 == ref2, true);
|
||||
expect(ref1 != ref2, false);
|
||||
expect(ref1 == ref3, false);
|
||||
expect(ref1 != ref3, true);
|
||||
|
||||
ref1.free();
|
||||
ref2.free();
|
||||
ref3.free();
|
||||
});
|
||||
|
||||
group('isValidName()', () {
|
||||
test('returns true for valid names', () {
|
||||
expect(Reference.isValidName('HEAD'), true);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue