                 expect(aView.frame).to(equal(CGRect(x: 0, y: 100.0, width: 200.0, height: 120.0)))
             }
         }
+
+        describe("the result of top&bottom percent margins when the hCenter is specified") {
+            it("should adjust the aView") {
+                aView.pin.hCenter(100).margin(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 200.0, y: 100.0, width: 200.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(100).marginLeft(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 210.0, y: 100.0, width: 200.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(100).marginRight(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 190.0, y: 100.0, width: 200.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(-100).margin(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 0.0, y: 100.0, width: 200.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(100).width(100).pinEdges().margin(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 260.0, y: 100.0, width: 80.0, height: 120.0)))
+            }
+
+            it("should obtain the same result with or without pinEdges()") {
+                aView.pin.hCenter(100).margin(2.5%)
+                let frameWithoutPinEdgest = aView.frame
+
+                aView.pin.hCenter(100).pinEdges().margin(2.5%)
+
+                expect(aView.frame).to(equal(frameWithoutPinEdgest))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(100).width(100).pinEdges().marginLeft(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 260.0, y: 100.0, width: 90, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(100).width(100).pinEdges().marginRight(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 250, y: 100.0, width: 90, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(100).width(100).pinEdges().marginLeft(2.5%).marginRight(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 260.0, y: 100.0, width: 80.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(100).width(50).height(100).margin(2.5%)
+                expect(aView.frame).to(equal(CGRect(x: 275.0, y: 100.0, width: 50.0, height: 100.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(100).width(50).height(100)
+                expect(aView.frame).to(equal(CGRect(x: 275.0, y: 100.0, width: 50.0, height: 100.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(25%)
+                expect(aView.frame).to(equal(CGRect(x: 200.0, y: 100.0, width: 200.0, height: 120.0)))
+            }
+
+            it("should adjust the aView") {
+                aView.pin.hCenter(-25%)
+                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: 100.0, width: 200.0, height: 80.0)))
            }
        }
        
        describe("the result of top&bottom margins when the top coordinate and the height are specified") {
            it("should adjust the aView") {

                expect(aView.frame).to(equal(CGRect(x: 250.0, y: 250.0, width: 100.0, height: 120.0)))
            }
            
            it("should adjust the aView") {
                aView.pin.hCenter(50%).vCenter(50%)
                expect(aView.frame).to(equal(CGRect(x: 300, y: 340, width: 200.0, height: 120.0)))
            }
        }

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

            it("should adjust the aView") {
                aView.pin.hCenter(100).vCenter(100).width(100).pinEdges().marginTop(2.5%)
                expect(aView.frame).to(equal(CGRect(x: 250.0, y: 250.0, width: 100.0, height: 120.0)))
            }

            it("should adjust the aView") {
                aView.pin.hCenter(50%).vCenter(50%)
                expect(aView.frame).to(equal(CGRect(x: 300, y: 340, width: 200.0, height: 120.0)))
