|
@@ -122,10 +122,10 @@ describe(@"create equality constraint", ^{
|
|
MASCompositeConstraint *composite = (id)constraint.equalTo(views).priorityMedium().offset(-10);
|
|
MASCompositeConstraint *composite = (id)constraint.equalTo(views).priorityMedium().offset(-10);
|
|
|
|
|
|
expect(delegate.constraints).to.haveCountOf(1);
|
|
expect(delegate.constraints).to.haveCountOf(1);
|
|
- expect([delegate.constraints objectAtIndex:0]).to.beKindOf(MASCompositeConstraint.class);
|
|
|
|
|
|
+ expect(delegate.constraints[0]).to.beKindOf(MASCompositeConstraint.class);
|
|
for (MASViewConstraint *constraint in composite.childConstraints) {
|
|
for (MASViewConstraint *constraint in composite.childConstraints) {
|
|
NSUInteger index = [composite.childConstraints indexOfObject:constraint];
|
|
NSUInteger index = [composite.childConstraints indexOfObject:constraint];
|
|
- expect(constraint.secondViewAttribute.view).to.beIdenticalTo((MAS_VIEW *)[views objectAtIndex:index]);
|
|
|
|
|
|
+ expect(constraint.secondViewAttribute.view).to.beIdenticalTo((MAS_VIEW *)views[index]);
|
|
expect(constraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeWidth);
|
|
expect(constraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeWidth);
|
|
expect(constraint.secondViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeWidth);
|
|
expect(constraint.secondViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeWidth);
|
|
expect(constraint.layoutPriority).to.equal(MASLayoutPriorityDefaultMedium);
|
|
expect(constraint.layoutPriority).to.equal(MASLayoutPriorityDefaultMedium);
|
|
@@ -140,16 +140,50 @@ describe(@"create equality constraint", ^{
|
|
MASCompositeConstraint *composite = (id)constraint.equalTo(viewAttributes).priority(60).offset(10);
|
|
MASCompositeConstraint *composite = (id)constraint.equalTo(viewAttributes).priority(60).offset(10);
|
|
|
|
|
|
expect(delegate.constraints).to.haveCountOf(1);
|
|
expect(delegate.constraints).to.haveCountOf(1);
|
|
- expect([delegate.constraints objectAtIndex:0]).to.beKindOf(MASCompositeConstraint.class);
|
|
|
|
|
|
+ expect(delegate.constraints[0]).to.beKindOf(MASCompositeConstraint.class);
|
|
for (MASViewConstraint *constraint in composite.childConstraints) {
|
|
for (MASViewConstraint *constraint in composite.childConstraints) {
|
|
NSUInteger index = [composite.childConstraints indexOfObject:constraint];
|
|
NSUInteger index = [composite.childConstraints indexOfObject:constraint];
|
|
- expect(constraint.secondViewAttribute.view).to.beIdenticalTo([[viewAttributes objectAtIndex:index] view]);
|
|
|
|
|
|
+ expect(constraint.secondViewAttribute.view).to.beIdenticalTo([viewAttributes[index] view]);
|
|
expect(constraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeWidth);
|
|
expect(constraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeWidth);
|
|
- expect(constraint.secondViewAttribute.layoutAttribute).to.equal([[viewAttributes objectAtIndex:index] layoutAttribute]);
|
|
|
|
|
|
+ expect(constraint.secondViewAttribute.layoutAttribute).to.equal([viewAttributes[index] layoutAttribute]);
|
|
expect(constraint.layoutPriority).to.equal(60);
|
|
expect(constraint.layoutPriority).to.equal(60);
|
|
expect(constraint.layoutConstant).to.equal(10);
|
|
expect(constraint.layoutConstant).to.equal(10);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+ it(@"should complain when using unnsupported equality argument", ^{
|
|
|
|
+ expect(^{
|
|
|
|
+ constraint.equalTo(@{});
|
|
|
|
+ }).to.raise(@"NSInternalInconsistencyException");
|
|
|
|
+ });
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+describe(@"prioritise", ^{
|
|
|
|
+
|
|
|
|
+ it(@"should set priorityHigh", ^{
|
|
|
|
+ constraint.equalTo(otherView);
|
|
|
|
+ constraint.with.priorityHigh();
|
|
|
|
+ [constraint install];
|
|
|
|
+
|
|
|
|
+ expect(constraint.layoutPriority).to.equal(MASLayoutPriorityDefaultHigh);
|
|
|
|
+ expect(constraint.layoutConstraint.priority).to.equal(MASLayoutPriorityDefaultHigh);
|
|
|
|
+ });
|
|
|
|
+ it(@"should set priorityLow", ^{
|
|
|
|
+ constraint.equalTo(otherView);
|
|
|
|
+ constraint.with.priorityLow();
|
|
|
|
+ [constraint install];
|
|
|
|
+
|
|
|
|
+ expect(constraint.layoutPriority).to.equal(MASLayoutPriorityDefaultLow);
|
|
|
|
+ expect(constraint.layoutConstraint.priority).to.equal(MASLayoutPriorityDefaultLow);
|
|
|
|
+ });
|
|
|
|
+ it(@"should set priorityMedium", ^{
|
|
|
|
+ constraint.equalTo(otherView);
|
|
|
|
+ constraint.with.priorityMedium();
|
|
|
|
+ [constraint install];
|
|
|
|
+
|
|
|
|
+ expect(constraint.layoutPriority).to.equal(MASLayoutPriorityDefaultMedium);
|
|
|
|
+ expect(constraint.layoutConstraint.priority).to.equal(MASLayoutPriorityDefaultMedium);
|
|
|
|
+ });
|
|
});
|
|
});
|
|
|
|
|
|
describe(@"multiplier & constant", ^{
|
|
describe(@"multiplier & constant", ^{
|
|
@@ -161,6 +195,24 @@ describe(@"multiplier & constant", ^{
|
|
constraint.multipliedBy(0.9);
|
|
constraint.multipliedBy(0.9);
|
|
}).to.raise(@"NSInternalInconsistencyException");
|
|
}).to.raise(@"NSInternalInconsistencyException");
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+ it(@"should set multipler with multipliedBy", ^{
|
|
|
|
+ constraint.equalTo(otherView);
|
|
|
|
+ constraint.multipliedBy(5);
|
|
|
|
+ [constraint install];
|
|
|
|
+
|
|
|
|
+ expect(constraint.layoutMultiplier).to.equal(5);
|
|
|
|
+ expect(constraint.layoutConstraint.multiplier).to.equal(5);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(@"should set multipler with dividedBy", ^{
|
|
|
|
+ constraint.equalTo(otherView);
|
|
|
|
+ constraint.dividedBy(10);
|
|
|
|
+ [constraint install];
|
|
|
|
+
|
|
|
|
+ expect(constraint.layoutMultiplier).to.equal(0.1);
|
|
|
|
+ expect(constraint.layoutConstraint.multiplier).to.beCloseTo(0.1);
|
|
|
|
+ });
|
|
|
|
|
|
it(@"should allow update of constant after layoutconstraint is created", ^{
|
|
it(@"should allow update of constant after layoutconstraint is created", ^{
|
|
[constraint install];
|
|
[constraint install];
|
|
@@ -172,7 +224,7 @@ describe(@"multiplier & constant", ^{
|
|
|
|
|
|
it(@"should update sides offset only", ^{
|
|
it(@"should update sides offset only", ^{
|
|
MASViewConstraint *centerY = [[MASViewConstraint alloc] initWithFirstViewAttribute:otherView.mas_centerY];
|
|
MASViewConstraint *centerY = [[MASViewConstraint alloc] initWithFirstViewAttribute:otherView.mas_centerY];
|
|
- centerY.insets((MASEdgeInsets){10, 10, 10, 10});
|
|
|
|
|
|
+ centerY.with.insets((MASEdgeInsets){10, 10, 10, 10});
|
|
expect(centerY.layoutConstant).to.equal(0);
|
|
expect(centerY.layoutConstant).to.equal(0);
|
|
|
|
|
|
MASViewConstraint *top = [[MASViewConstraint alloc] initWithFirstViewAttribute:otherView.mas_top];
|
|
MASViewConstraint *top = [[MASViewConstraint alloc] initWithFirstViewAttribute:otherView.mas_top];
|
|
@@ -240,7 +292,38 @@ describe(@"install", ^{
|
|
expect(constraint.layoutConstraint.priority).to.equal(345);
|
|
expect(constraint.layoutConstraint.priority).to.equal(345);
|
|
expect(constraint.layoutConstraint.multiplier).to.equal(0.5);
|
|
expect(constraint.layoutConstraint.multiplier).to.equal(0.5);
|
|
|
|
|
|
- expect([superview.constraints objectAtIndex:0]).to.beIdenticalTo(constraint.layoutConstraint);
|
|
|
|
|
|
+ expect(superview.constraints[0]).to.beIdenticalTo(constraint.layoutConstraint);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(@"alignment should be relative to superview", ^{
|
|
|
|
+ MAS_VIEW *view = MAS_VIEW.new;
|
|
|
|
+ constraint = [[MASViewConstraint alloc] initWithFirstViewAttribute:view.mas_baseline];
|
|
|
|
+ constraint.delegate = delegate;
|
|
|
|
+ [superview addSubview:view];
|
|
|
|
+
|
|
|
|
+ constraint.equalTo(@10);
|
|
|
|
+ [constraint install];
|
|
|
|
+
|
|
|
|
+ expect(constraint.layoutConstraint.firstAttribute).to.equal(NSLayoutAttributeBaseline);
|
|
|
|
+ expect(constraint.layoutConstraint.secondAttribute).to.equal(NSLayoutAttributeBaseline);
|
|
|
|
+ expect(constraint.layoutConstraint.firstItem).to.beIdenticalTo(constraint.firstViewAttribute.view);
|
|
|
|
+ expect(constraint.layoutConstraint.secondItem).to.beIdenticalTo(superview);
|
|
|
|
+ expect(constraint.layoutConstraint.relation).to.equal(NSLayoutRelationEqual);
|
|
|
|
+ expect(constraint.layoutConstraint.constant).to.equal(10);
|
|
|
|
+ expect(superview.constraints[0]).to.beIdenticalTo(constraint.layoutConstraint);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ it(@"size should be constant", ^{
|
|
|
|
+ constraint.equalTo(@10);
|
|
|
|
+ [constraint install];
|
|
|
|
+
|
|
|
|
+ expect(constraint.layoutConstraint.firstAttribute).to.equal(NSLayoutAttributeWidth);
|
|
|
|
+ expect(constraint.layoutConstraint.secondAttribute).to.equal(NSLayoutAttributeNotAnAttribute);
|
|
|
|
+ expect(constraint.layoutConstraint.firstItem).to.beIdenticalTo(constraint.firstViewAttribute.view);
|
|
|
|
+ expect(constraint.layoutConstraint.secondItem).to.beNil();
|
|
|
|
+ expect(constraint.layoutConstraint.relation).to.equal(NSLayoutRelationEqual);
|
|
|
|
+ expect(constraint.layoutConstraint.constant).to.equal(10);
|
|
|
|
+ expect(constraint.firstViewAttribute.view.constraints[0]).to.beIdenticalTo(constraint.layoutConstraint);
|
|
});
|
|
});
|
|
|
|
|
|
it(@"should uninstall constraint", ^{
|
|
it(@"should uninstall constraint", ^{
|
|
@@ -249,7 +332,7 @@ describe(@"install", ^{
|
|
[constraint install];
|
|
[constraint install];
|
|
|
|
|
|
expect(superview.constraints).to.haveCountOf(1);
|
|
expect(superview.constraints).to.haveCountOf(1);
|
|
- expect([superview.constraints objectAtIndex:0]).to.equal(constraint.layoutConstraint);
|
|
|
|
|
|
+ expect(superview.constraints[0]).to.equal(constraint.layoutConstraint);
|
|
|
|
|
|
[constraint uninstall];
|
|
[constraint uninstall];
|
|
expect(superview.constraints).to.haveCountOf(0);
|
|
expect(superview.constraints).to.haveCountOf(0);
|