| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 | 
							
- import Element from "../src/element";
 
- test("layout", () => {
 
-   const container = new Element({
 
-     width: 100,
 
-     height: 100,
 
-     padding: 10,
 
-     borderWidth: 2
 
-   })
 
-   const div1 = new Element({
 
-     left: 5,
 
-     top: 5,
 
-     width: 14,
 
-     height: 14
 
-   })
 
-   container.add(div1);
 
-   container.layout();
 
-   // css-layout 是 border-box
 
-   expect(container.layoutBox.left).toBe(0);
 
-   expect(container.layoutBox.top).toBe(0);
 
-   expect(container.layoutBox.width).toBe(100);
 
-   expect(container.layoutBox.height).toBe(100);
 
-   expect(div1.layoutBox.left).toBe(10 + 2 + 5);
 
-   expect(div1.layoutBox.top).toBe(10 + 2 + 5);
 
-   expect(div1.layoutBox.width).toBe(14);
 
-   expect(div1.layoutBox.height).toBe(14);
 
- });
 
- test("overflow", () => {
 
-   const container = new Element({
 
-     width: 100,
 
-     height: 100,
 
-     padding: 10,
 
-     borderWidth: 2
 
-   })
 
-   const div1 = new Element({
 
-     width: 114,
 
-     height: 114,
 
-   })
 
-   container.add(div1);
 
-   container.layout();
 
-   // 写死尺寸的情况下子元素不收缩父元素不撑开
 
-   expect(container.layoutBox.width).toBe(100);
 
-   expect(container.layoutBox.height).toBe(100);
 
-   expect(div1.layoutBox.left).toBe(10 + 2);
 
-   expect(div1.layoutBox.top).toBe(10 + 2);
 
-   expect(div1.layoutBox.width).toBe(114);
 
-   expect(div1.layoutBox.height).toBe(114);
 
- });
 
- test("right bottom", () => {
 
-   const container = new Element({
 
-     width: 100,
 
-     height: 100,
 
-     padding: 10,
 
-     borderWidth: 2
 
-   })
 
-   const div1 = new Element({
 
-     width: 14,
 
-     height: 14,
 
-     right: 13,
 
-     bottom: 9,
 
-     position: "absolute"
 
-   })
 
-   container.add(div1);
 
-   container.layout();
 
-   // right bottom 只有在 position 为 absolute 的情况下才有用
 
-   expect(container.layoutBox.width).toBe(100);
 
-   expect(container.layoutBox.height).toBe(100);
 
-   // 但这时就是以整个父元素为边界,而不是 border + padding 后的边界
 
-   expect(div1.layoutBox.left).toBe(100 - 13 - 14);
 
-   expect(div1.layoutBox.top).toBe(100 - 9 - 14);
 
- });
 
- test("flex center", () => {
 
-   const container = new Element({
 
-     width: 100,
 
-     height: 100,
 
-     padding: 10,
 
-     borderWidth: 2,
 
-     flexDirection: "row",
 
-     justifyContent: "center",
 
-     alignItems: "center"
 
-   })
 
-   const div1 = new Element({
 
-     width: 14,
 
-     height: 14
 
-   })
 
-   container.add(div1);
 
-   container.layout();
 
-   // 使用 flex 水平垂直居中
 
-   expect(div1.layoutBox.left).toBe((100 - 14)/2);
 
-   expect(div1.layoutBox.top).toBe((100 - 14)/2);
 
- })
 
- test("flex top bottom", () => {
 
-   const container = new Element({
 
-     width: 100,
 
-     height: 100,
 
-     padding: 10,
 
-     borderWidth: 2,
 
-     flexDirection: "column",
 
-     justifyContent: "space-between",
 
-     alignItems: "stretch"
 
-   })
 
-   // flex 实现一上一下两行水平填满
 
-   const div1 = new Element({
 
-     height: 10
 
-   })
 
-   const div2 = new Element({
 
-     height: 20
 
-   })
 
-   container.add(div1);
 
-   container.add(div2);
 
-   container.layout();
 
-   expect(div1.layoutBox.left).toBe(10 + 2);
 
-   expect(div1.layoutBox.top).toBe(10 + 2);
 
-   expect(div1.layoutBox.width).toBe(100 - 10*2 - 2*2);
 
-   expect(div2.layoutBox.left).toBe(10 + 2);
 
-   expect(div2.layoutBox.top).toBe(100 - 10 - 2 - 20);
 
-   expect(div2.layoutBox.width).toBe(100 - 10*2 - 2*2);
 
- })
 
- test("rewrite uuid", () => {
 
-   // 小程序为了保证 webview 和 service 侧的 coverview 不冲突,所以设置了不同的自增起点
 
-   // uuid 静态方法就是为了根据不同的需求去覆写
 
-   let uuid = 79648527;
 
-   Element.uuid = () =>  uuid++;
 
-   const container = new Element();
 
-   expect(container.id).toEqual(79648527);
 
-   const div = new Element();
 
-   expect(div.id).toEqual(79648528);
 
- });
 
- test("absolute left top", () => {
 
-   const container = new Element({
 
-     width: 300,
 
-     height: 200,
 
-     flexDirection: 'row',
 
-     justifyContent: 'center',
 
-     alignItems: 'center'
 
-   })
 
-   
 
-   const div1 = new Element({
 
-     width: 80,
 
-     height: 60
 
-   })
 
-   
 
-   const div2 = new Element({
 
-     width: 40,
 
-     height: 30
 
-   })
 
-   div1.add(div2)
 
-   container.add(div1)
 
-   container.layout()
 
-   expect(div1.layoutBox.left).toBe(110)
 
-   expect(div1.layoutBox.top).toBe(70)
 
-   expect(div2.layoutBox.left).toBe(110)
 
-   expect(div2.layoutBox.top).toBe(70)
 
- })
 
 
  |