Skip to content

Commit

Permalink
add test
Browse files Browse the repository at this point in the history
  • Loading branch information
syf20020816 committed Aug 23, 2024
1 parent 128c7c3 commit c5fb246
Show file tree
Hide file tree
Showing 16 changed files with 258 additions and 42 deletions.
11 changes: 11 additions & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
34 changes: 16 additions & 18 deletions src/gen/design/future.md
Original file line number Diff line number Diff line change
@@ -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 ⏱️

总的来说,已经为实现增量编译设定了一个很好的基础。接下来的关键在于如何有效地实现变更检测机制,以及如何优化独立部分的编译与缓存策略。通过不断迭代和优化,你的框架将能够提供更加高效和响应快速的开发体验。
1.
22 changes: 0 additions & 22 deletions src/gen/design/gen-ui-design copy.md

This file was deleted.

42 changes: 42 additions & 0 deletions src/gen/tests/animation.md
Original file line number Diff line number Diff line change
@@ -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
14 changes: 14 additions & 0 deletions src/gen/tests/color.md
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions src/gen/tests/dyn/dyn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Dyn
1 change: 1 addition & 0 deletions src/gen/tests/dyn/event.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Event
1 change: 1 addition & 0 deletions src/gen/tests/dyn/inject.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Inject-Script
1 change: 1 addition & 0 deletions src/gen/tests/dyn/lifetime.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# LifeTime
1 change: 1 addition & 0 deletions src/gen/tests/dyn/prop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Prop
16 changes: 16 additions & 0 deletions src/gen/tests/for.md
Original file line number Diff line number Diff line change
@@ -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. [ ] 数值绑定
12 changes: 12 additions & 0 deletions src/gen/tests/if.md
Original file line number Diff line number Diff line change
@@ -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. [ ] 数值绑定
94 changes: 94 additions & 0 deletions src/gen/tests/static.md
Original file line number Diff line number Diff line change
@@ -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|更新时间|
|--|--|--|--|
17 changes: 17 additions & 0 deletions src/gen/tests/test.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Test-Plan

测试计划,该计划会在GenUI框架基本完成前重复执行,并在每个阶段进行修正和增加相应的

> [!IMPORTANT]
>
> 当前包括以下测试:
> 1. 静态组件
> 2. Color
> 3. 动画
> 4. For
> 5. If
> 6. 动态组件
> 1. 示例与属性
> 2. 示例事件
> 3. 生命周期
> 4. 脚本混入
2 changes: 1 addition & 1 deletion src/gen/tutorials/conf.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
31 changes: 30 additions & 1 deletion src/gen/tutorials/syntex/for.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ GenUI会将其处理为虚拟widget并自动生成Makepad的ForWidget(含有Co

![](../../../static/gen/tutorials/for.png)

## Example
## Example1

```rust
<template>
Expand All @@ -27,6 +27,35 @@ GenUI会将其处理为虚拟widget并自动生成Makepad的ForWidget(含有Co
let list: Vec<String> = vec!["Hello".to_string(), "GenUI".to_string()];
</script>

<style>
#ui{
#main_window{
width: Fill;
height: Fill;
flow: Down;
window_size: 600.0, 800.0;
}
}
</style>
```

## Example2

```rust
<template>
<component id="RootComponent" inherits="root">
<window id="main_window">
<view flow="Down" height="All" id="main_view">
<label :for="(index, value) in list" :text="value" font_size="16.0"></label>
</view>
</window>
</component>
</template>

<script>
let list: [String; 2] = ["Hello".to_string(), "GenUI".to_string()];
</script>

<style>
#ui{
#main_window{
Expand Down

0 comments on commit c5fb246

Please sign in to comment.