From c5fb246699d8842e5533988c92d005a020501b3a Mon Sep 17 00:00:00 2001 From: syf20020816 Date: Fri, 23 Aug 2024 15:26:01 +0800 Subject: [PATCH] add test --- src/SUMMARY.md | 11 ++++ src/gen/design/future.md | 34 +++++----- src/gen/design/gen-ui-design copy.md | 22 ------- src/gen/tests/animation.md | 42 +++++++++++++ src/gen/tests/color.md | 14 +++++ src/gen/tests/dyn/dyn.md | 1 + src/gen/tests/dyn/event.md | 1 + src/gen/tests/dyn/inject.md | 1 + src/gen/tests/dyn/lifetime.md | 1 + src/gen/tests/dyn/prop.md | 1 + src/gen/tests/for.md | 16 +++++ src/gen/tests/if.md | 12 ++++ src/gen/tests/static.md | 94 ++++++++++++++++++++++++++++ src/gen/tests/test.md | 17 +++++ src/gen/tutorials/conf.md | 2 +- src/gen/tutorials/syntex/for.md | 31 ++++++++- 16 files changed, 258 insertions(+), 42 deletions(-) delete mode 100644 src/gen/design/gen-ui-design copy.md create mode 100644 src/gen/tests/animation.md create mode 100644 src/gen/tests/color.md create mode 100644 src/gen/tests/dyn/dyn.md create mode 100644 src/gen/tests/dyn/event.md create mode 100644 src/gen/tests/dyn/inject.md create mode 100644 src/gen/tests/dyn/lifetime.md create mode 100644 src/gen/tests/dyn/prop.md create mode 100644 src/gen/tests/for.md create mode 100644 src/gen/tests/if.md create mode 100644 src/gen/tests/static.md create mode 100644 src/gen/tests/test.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 9dd11ad..9581d07 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -40,6 +40,17 @@ - [Icon](./gen/makepad/components/icon.md) - [Image](./gen/makepad/components/image.md) - [Input](./gen/makepad/components/input.md) +- [Test-Plan](./gen/tests/test.md) + - [Static](./gen/tests/static.md) + - [Color](./gen/tests/color.md) + - [Animation](./gen/tests/animation.md) + - [For](./gen/tests/for.md) + - [If](./gen/tests/if.md) + - [Dyn](./gen/tests/dyn/dyn.md) + - [Prop](./gen/tests/dyn/prop.md) + - [Event](./gen/tests/dyn/event.md) + - [LifeTime](./gen/tests/dyn/lifetime.md) + - [Inject-Script](./gen/tests/dyn/inject.md) - [GenUI-Design](./gen/design/gen-ui-design.md) - [Parser](./gen/design/parser/parser.md) - [Result](./gen/design/parser/result.md) diff --git a/src/gen/design/future.md b/src/gen/design/future.md index ca95b62..b1ab81f 100644 --- a/src/gen/design/future.md +++ b/src/gen/design/future.md @@ -1,20 +1,18 @@ -# Incremental compilation -通过将代码分成模板、脚本、和样式三个部分,已经为实现增量编译奠定了基础。增量编译的关键在于能够快速识别出自上次编译以来哪些部分发生了变化,并仅重新编译这些变化的部分,从而节省时间和资源。将代码预处理成几个独立的部分,并使用策略模式来处理这些部分,为增量编译提供了一个很好的起点。以下是一些可以考虑的方向来进一步实现和优化增量编译的功能: - -## 1. 变更检测机制 ✅ - -为了实现增量编译,你需要一种机制来比较当前代码与上一次编译版本之间的差异。这涉及到对每个部分(模板、脚本、样式)进行某种形式的哈希或签名,以便快速识别出哪些部分发生了变化。Git这样的版本控制系统就是利用哈希来追踪文件变化的一个例子。 - -## 2. 独立部分的编译与缓存 ✅ - -在检测到特定部分(模板、脚本、样式)发生变化后,你的框架应该能够仅重新编译这些变化的部分,而不是整个应用。此外,对于没有变化的部分,如果能够缓存它们的编译结果,就可以在下一次编译时直接复用,进一步提高编译效率。 - -## 3. 策略模式的应用 ✅ - -使用了策略模式进行处理,这是一个很好的选择,因为它允许你为不同类型的变化定义不同的处理策略。例如,对于模板部分的变化,可能涉及到DOM结构的更新;而脚本部分的变化可能涉及到逻辑处理的更新;样式部分的变化则涉及到视觉表现的更新。通过为这些不同的变化类型定义具体的策略,你的框架可以更加灵活地处理各种变化情况。 - -## 4. 优化构建过程 half ✅ - +# Future + +## Stage 1 ✅ +~# Incremental compilation +通过将代码分成模板、脚本、和样式三个部分,已经为实现增量编译奠定了基础。增量编译的关键在于能够快速识别出自上次编译以来哪些部分发生了变化,并仅重新编译这些变化的部分,从而节省时间和资源。将代码预处理成几个独立的部分,并使用策略模式来处理这些部分,为增量编译提供了一个很好的起点。以下是一些可以考虑的方向来进一步实现和优化增量编译的功能:~ +~## 1. 变更检测机制 ✅ +为了实现增量编译,你需要一种机制来比较当前代码与上一次编译版本之间的差异。这涉及到对每个部分(模板、脚本、样式)进行某种形式的哈希或签名,以便快速识别出哪些部分发生了变化。Git这样的版本控制系统就是利用哈希来追踪文件变化的一个例子。~ +~## 2. 独立部分的编译与缓存 ✅ +在检测到特定部分(模板、脚本、样式)发生变化后,你的框架应该能够仅重新编译这些变化的部分,而不是整个应用。此外,对于没有变化的部分,如果能够缓存它们的编译结果,就可以在下一次编译时直接复用,进一步提高编译效率。~ +~## 3. 策略模式的应用 ✅ +使用了策略模式进行处理,这是一个很好的选择,因为它允许你为不同类型的变化定义不同的处理策略。例如,对于模板部分的变化,可能涉及到DOM结构的更新;而脚本部分的变化可能涉及到逻辑处理的更新;样式部分的变化则涉及到视觉表现的更新。通过为这些不同的变化类型定义具体的策略,你的框架可以更加灵活地处理各种变化情况。~ +~## 4. 优化构建过程 half ✅ 除了增量编译之外,还可以探索其他优化构建过程的方法。比如,是否可以并行处理某些任务?是否可以更智能地安排任务的执行顺序以减少依赖等待时间?这些都是值得考虑的优化方向。 +总的来说,已经为实现增量编译设定了一个很好的基础。接下来的关键在于如何有效地实现变更检测机制,以及如何优化独立部分的编译与缓存策略。通过不断迭代和优化,你的框架将能够提供更加高效和响应快速的开发体验。~ + +## Stage 2 ⏱️ -总的来说,已经为实现增量编译设定了一个很好的基础。接下来的关键在于如何有效地实现变更检测机制,以及如何优化独立部分的编译与缓存策略。通过不断迭代和优化,你的框架将能够提供更加高效和响应快速的开发体验。 \ No newline at end of file +1. \ No newline at end of file diff --git a/src/gen/design/gen-ui-design copy.md b/src/gen/design/gen-ui-design copy.md deleted file mode 100644 index e61f6bb..0000000 --- a/src/gen/design/gen-ui-design copy.md +++ /dev/null @@ -1,22 +0,0 @@ -# GenUI-Design - -## Template -HTML-LIKE: -与HTML相似,但语法经过处理 - -所有的被处理的被认为是不必要的,可能使得模版不够专注! - -1. 不允许直接书写字符串 -2. 禁止使用模版语法,使用Rust `format!`进行值绑定 -3. 标签上声明基本属性只能使用基本类型,复杂类型需要绑定 -4. 函数体不允许直接书写在属性中,使用函数绑定 -5. 属性类型具有强类型指向型 - -## Script -1. Allow Rust syntax - -## Style - -1. bind to tag by name -2. nesting allowed -3. function and bind allowed \ No newline at end of file diff --git a/src/gen/tests/animation.md b/src/gen/tests/animation.md new file mode 100644 index 0000000..482c494 --- /dev/null +++ b/src/gen/tests/animation.md @@ -0,0 +1,42 @@ +# Animation + +该测试当前位置: `GenUI/examples/tests` + +|测试版本|Makepad|GenUI|更新时间| +|--|--|--|--| +|0.1.0|0.6.0|0.1.0_unpub|2024-08-22| + +- [ ] Window +- [x] View +- [ ] Button +- [ ] Icon +- [ ] Label +- [ ] Image +- [ ] RotatedImage +- [ ] Radio +- [ ] Checkbox +- [ ] ScrollXYView +- [ ] ScrollXView +- [ ] ScrollYView +- [ ] SolidView +- [ ] RectView +- [ ] RectShadowView +- [ ] RoundedView +- [ ] RoundedShadowView +- [ ] TextInput +- [ ] DropDown +- [ ] LinkLabel +- [ ] FoldButton +- [ ] Slider +- [ ] SliderBig +- [ ] Slide + - [ ] SlidesView + - [ ] SlideBody + - [ ] SlideChapter +- [ ] FoldHeader +- [ ] Html +- [ ] Markdown +- [ ] ScrollBar +- [ ] ScrollBars +- [ ] DesktopButton +- [ ] Splitter \ No newline at end of file diff --git a/src/gen/tests/color.md b/src/gen/tests/color.md new file mode 100644 index 0000000..080425a --- /dev/null +++ b/src/gen/tests/color.md @@ -0,0 +1,14 @@ +# Color + +该测试当前位置: `GenUI/examples/tests` + +|测试版本|Makepad|GenUI|更新时间| +|--|--|--|--| +|0.1.0|0.6.0|0.1.0_unpub|2024-08-22| + +- [x] Hex +- [x] Rgb +- [x] Rgba +- [x] Linear +- [x] Radial +- [x] Shader \ No newline at end of file diff --git a/src/gen/tests/dyn/dyn.md b/src/gen/tests/dyn/dyn.md new file mode 100644 index 0000000..88257d5 --- /dev/null +++ b/src/gen/tests/dyn/dyn.md @@ -0,0 +1 @@ +# Dyn diff --git a/src/gen/tests/dyn/event.md b/src/gen/tests/dyn/event.md new file mode 100644 index 0000000..bdd2b86 --- /dev/null +++ b/src/gen/tests/dyn/event.md @@ -0,0 +1 @@ +# Event diff --git a/src/gen/tests/dyn/inject.md b/src/gen/tests/dyn/inject.md new file mode 100644 index 0000000..7bcbe87 --- /dev/null +++ b/src/gen/tests/dyn/inject.md @@ -0,0 +1 @@ +# Inject-Script diff --git a/src/gen/tests/dyn/lifetime.md b/src/gen/tests/dyn/lifetime.md new file mode 100644 index 0000000..16a9d72 --- /dev/null +++ b/src/gen/tests/dyn/lifetime.md @@ -0,0 +1 @@ +# LifeTime diff --git a/src/gen/tests/dyn/prop.md b/src/gen/tests/dyn/prop.md new file mode 100644 index 0000000..d13efdd --- /dev/null +++ b/src/gen/tests/dyn/prop.md @@ -0,0 +1 @@ +# Prop diff --git a/src/gen/tests/for.md b/src/gen/tests/for.md new file mode 100644 index 0000000..320217d --- /dev/null +++ b/src/gen/tests/for.md @@ -0,0 +1,16 @@ +# For + +该测试当前位置: `GenUI/examples/gen_makepad_simple` + +|测试版本|Makepad|GenUI|更新时间| +|--|--|--|--| +|0.1.0|0.6.0|0.1.0_unpub|2024-08-22| + +1. [x] `[$Type; n]` +2. [x] `Vec<$Type>` + +--- + +1. [x] 单层For +2. [ ] 嵌套For +3. [ ] 数值绑定 \ No newline at end of file diff --git a/src/gen/tests/if.md b/src/gen/tests/if.md new file mode 100644 index 0000000..13a56ae --- /dev/null +++ b/src/gen/tests/if.md @@ -0,0 +1,12 @@ +# If + +该测试当前位置: `GenUI/examples/gen_makepad_simple` + +|测试版本|Makepad|GenUI|更新时间| +|--|--|--|--| +|0.1.0|0.6.0|0.1.0_unpub|2024-08-22| + +1. [x] 简单bool +2. [ ] 其他类型 +3. [ ] 闭包方法 +4. [ ] 数值绑定 \ No newline at end of file diff --git a/src/gen/tests/static.md b/src/gen/tests/static.md new file mode 100644 index 0000000..a1b0444 --- /dev/null +++ b/src/gen/tests/static.md @@ -0,0 +1,94 @@ +# Static + +## Makepad 基础组件测试 + +该测试当前位置: `GenUI/examples/gen_makepad_simple` + +|测试版本|Makepad|GenUI|更新时间| +|--|--|--|--| +|0.1.0|0.6.0|0.1.0_unpub|2024-08-22| + +- [x] Window +- [x] View +- [x] Button +- [x] Icon +- [x] Label +- [x] Image +- [x] RotatedImage +- [x] Radio +- [x] Checkbox +- [x] ScrollXYView +- [x] ScrollXView +- [x] ScrollYView +- [x] SolidView +- [x] RectView +- [x] RectShadowView +- [x] RoundedView +- [x] RoundedShadowView +- [x] TextInput +- [x] DropDown +- [x] LinkLabel +- [x] FoldButton +- [x] Slider +- [x] SliderBig +- [x] Slide + - [x] SlidesView + - [x] SlideBody + - [x] SlideChapter +- [x] FoldHeader +- [x] Html +- [x] Markdown +- [x] ScrollBar +- [x] ScrollBars +- [x] DesktopButton +- [x] Splitter + +## 内置GenUI库测试 + +该测试当前位置: `GenUI/examples/gen_widget_simple` + +|测试版本|Makepad|GenUI|更新时间| +|--|--|--|--| +|0.1.0|0.6.0|0.1.0_unpub|2024-08-14| + +- [x] Label +- [x] Link +- [x] Button +- [x] Card + - [x] VLayout + - [x] HLayout +- [x] Radio +- [x] CheckBox +- [x] Icon +- [x] Image +- [x] Input +- [x] Popup +- [x] Progress +- [x] Loading +- [ ] Badge +- [ ] DropDown +- [x] Toggle +- [ ] Avatar +- [ ] ToolTip +- [ ] Progress +- [ ] Slider +- [ ] Tab +- [ ] Table +- [ ] Dialog +- [x] Select +- [ ] FileUpload +- [x] Divide +- [ ] Loading +- [ ] EmptyState +- [ ] BreadCrumb +- [ ] Pagination +- [ ] Metric +- [ ] Menu +- [x] ScrollBar(s) + +## 内置库集成GenUI (未开始) + +该测试当前位置: `GenUI/examples/` + +|测试版本|Makepad|GenUI|更新时间| +|--|--|--|--| diff --git a/src/gen/tests/test.md b/src/gen/tests/test.md new file mode 100644 index 0000000..15b408d --- /dev/null +++ b/src/gen/tests/test.md @@ -0,0 +1,17 @@ +# Test-Plan + +测试计划,该计划会在GenUI框架基本完成前重复执行,并在每个阶段进行修正和增加相应的 + +> [!IMPORTANT] +> +> 当前包括以下测试: +> 1. 静态组件 +> 2. Color +> 3. 动画 +> 4. For +> 5. If +> 6. 动态组件 +> 1. 示例与属性 +> 2. 示例事件 +> 3. 生命周期 +> 4. 脚本混入 \ No newline at end of file diff --git a/src/gen/tutorials/conf.md b/src/gen/tutorials/conf.md index 6a9f613..ade5be5 100644 --- a/src/gen/tutorials/conf.md +++ b/src/gen/tutorials/conf.md @@ -19,7 +19,7 @@ entry = "app" root = "E:/Rust/try/makepad/Gen-UI/examples/gen_makepad_simple/ui/views/root.gen" [makepad.dependencies] makepad-widgets = { path = "E:/Rust/try/makepad/makepad/rik/makepad/widgets" } -[wasm] +[makepad.wasm] check = false fresh = true port = 8016 diff --git a/src/gen/tutorials/syntex/for.md b/src/gen/tutorials/syntex/for.md index 7ba4446..85762b7 100644 --- a/src/gen/tutorials/syntex/for.md +++ b/src/gen/tutorials/syntex/for.md @@ -10,7 +10,7 @@ GenUI会将其处理为虚拟widget并自动生成Makepad的ForWidget(含有Co ![](../../../static/gen/tutorials/for.png) -## Example +## Example1 ```rust