MASConstraintMakerSpec.m
3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//
// MASConstraintMakerSpec.m
// Masonry
//
// Created by Jonas Budelmann on 25/08/13.
// Copyright (c) 2013 Jonas Budelmann. All rights reserved.
//
#import "MASConstraintMaker.h"
#import "MASCompositeConstraint.h"
#import "MASViewConstraint.h"
@interface MASConstraintMaker () <MASConstraintDelegate>
@property (nonatomic, weak) MAS_VIEW *view;
@property (nonatomic, strong) NSMutableArray *constraints;
@end
@interface MASCompositeConstraint ()
@property (nonatomic, strong) NSMutableArray *childConstraints;
@end
SpecBegin(MASConstraintMaker)
__block MASConstraintMaker *maker;
__block MAS_VIEW *superview;
__block MAS_VIEW *view;
__block MASCompositeConstraint *composite;
beforeEach(^{
composite = nil;
view = MAS_VIEW.new;
superview = MAS_VIEW.new;
[superview addSubview:view];
maker = [[MASConstraintMaker alloc] initWithView:view];
});
it(@"should create centerY and centerX children", ^{
composite = maker.center;
expect(composite.childConstraints).to.haveCountOf(2);
MASViewConstraint *viewConstraint = [composite.childConstraints objectAtIndex:0];
expect(viewConstraint.firstViewAttribute.view).to.beIdenticalTo(maker.view);
expect(viewConstraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeCenterX);
viewConstraint = [composite.childConstraints objectAtIndex:1];
expect(viewConstraint.firstViewAttribute.view).to.beIdenticalTo(maker.view);
expect(viewConstraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeCenterY);
});
it(@"should create top, left, bottom, right children", ^{
MAS_VIEW *newView = MAS_VIEW.new;
composite = maker.edges;
composite.equalTo(newView);
expect(composite.childConstraints).to.haveCountOf(4);
//top
MASViewConstraint *viewConstraint = [composite.childConstraints objectAtIndex:0];
expect(viewConstraint.firstViewAttribute.view).to.beIdenticalTo(maker.view);
expect(viewConstraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeTop);
//left
viewConstraint = [composite.childConstraints objectAtIndex:1];
expect(viewConstraint.firstViewAttribute.view).to.beIdenticalTo(maker.view);
expect(viewConstraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeLeft);
//bottom
viewConstraint = [composite.childConstraints objectAtIndex:2];
expect(viewConstraint.firstViewAttribute.view).to.beIdenticalTo(maker.view);
expect(viewConstraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeBottom);
//right
viewConstraint = [composite.childConstraints objectAtIndex:3];
expect(viewConstraint.firstViewAttribute.view).to.beIdenticalTo(maker.view);
expect(viewConstraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeRight);
});
it(@"should create width and height children", ^{
composite = maker.size;
expect(composite.childConstraints).to.haveCountOf(2);
MASViewConstraint *viewConstraint = [composite.childConstraints objectAtIndex:0];
expect(viewConstraint.firstViewAttribute.view).to.beIdenticalTo(maker.view);
expect(viewConstraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeWidth);
viewConstraint = [composite.childConstraints objectAtIndex:1];
expect(viewConstraint.firstViewAttribute.view).to.beIdenticalTo(maker.view);
expect(viewConstraint.firstViewAttribute.layoutAttribute).to.equal(NSLayoutAttributeHeight);
});
SpecEnd