             }
         }
 
+        describe("the result of left&right percent margins when the right coordinate and the width are specified") {
+            it("should adjust the aView") {
+                aView.pin.right(140).width(100).margin(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 150.0, y: 100.0, width: 100.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.right(140).width(100).pinEdges().margin(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 170.0, y: 100.0, width: 80.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.right(140).width(100).pinEdges().marginLeft(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 170.0, y: 100.0, width: 90.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.right(140).width(100).pinEdges().marginRight(5%)
+                expect(aView.frame).to(equal(CGRect(x: 160.0, y: 100.0, width: 80.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.right(140).width(100).pinEdges().marginRight(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 160.0, y: 100.0, width: 90.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.right(140).width(100).pinEdges().marginLeft(2.5%).marginRight(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 170.0, y: 100.0, width: 80.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.right(140).width(100).pinEdges().marginHorizontal(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 170.0, y: 100.0, width: 80.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.right(140).width(100).marginLeft(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 160.0, y: 100.0, width: 100.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.right(140).width(100).marginRight(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 150.0, y: 100.0, width: 100.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.right(140).width(100).marginHorizontal(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 150.0, y: 100.0, width: 100.0, height: 120.0)))
+            }
+        }
+
         describe("the result of left&right margins when the left and right coordinate are specified") {
             it("should adjust the aView") {
                 aView.pin.left(140).right(160).margin(10)

                expect(aView.frame).to(equal(CGRect(x: 0, y: 100.0, width: 200.0, height: 120.0)))
            }
        }
        
        //
        // vCenter

                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 150.0, width: 200.0, height: 100.0)))
            }
        }

        describe("the result of top&bottom percent margins when the top coordinate and the height are specified") {
            it("should adjust the aView") {
                aView.pin.top(140).height(100).margin(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 150.0, width: 200.0, height: 100.0)))
            }

            it("should adjust the aView") {
                aView.pin.top(140).height(100).pinEdges().margin(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 150.0, width: 200.0, height: 80.0)))
            }

            it("should adjust the aView") {
                aView.pin.top(140).height(100).pinEdges().marginTop(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 150.0, width: 200.0, height: 90.0)))
            }

            it("should adjust the aView") {
                aView.pin.top(140).height(100).pinEdges().marginBottom(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 140.0, width: 200.0, height: 90.0)))
            }

            it("should adjust the aView") {
                aView.pin.top(140).height(100).pinEdges().marginTop(2.5%).marginBottom(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 150.0, width: 200.0, height: 80.0)))
            }

            it("should adjust the aView") {
                aView.pin.top(140).height(100).pinEdges().marginVertical(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 150.0, width: 200.0, height: 80.0)))
            }

            it("should adjust the aView") {
                aView.pin.top(140).height(100).pinEdges().marginTop(5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 160.0, width: 200.0, height: 80.0)))
            }

            it("should adjust the aView") {
                aView.pin.top(140).height(100).marginTop(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 150.0, width: 200.0, height: 100.0)))
            }

            it("should adjust the aView") {
                aView.pin.top(140).height(100).marginBottom(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 140.0, width: 200.0, height: 100.0)))
            }

            it("should adjust the aView") {
                aView.pin.top(140).height(100).marginVertical(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 140.0, y: 150.0, width: 200.0, height: 100.0)))
            }
        }
        
        //
        // bottom & height
