Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
fc7943fe
Commit
fc7943fe
authored
Aug 28, 2015
by
Hixie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Test MixedViewport
add/remove/add smoketest basic vertical behaviour basic horizontal behaviour
parent
2d0d82e0
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
176 additions
and
0 deletions
+176
-0
mixed_viewport_test.dart
packages/unit/test/widget/mixed_viewport_test.dart
+172
-0
widget_tester.dart
packages/unit/test/widget/widget_tester.dart
+4
-0
No files found.
packages/unit/test/widget/mixed_viewport_test.dart
0 → 100644
View file @
fc7943fe
import
'package:sky/widgets.dart'
;
import
'package:test/test.dart'
;
import
'package:quiver/testing/async.dart'
;
import
'widget_tester.dart'
;
class
TestComponent
extends
StatefulComponent
{
TestComponent
(
this
.
viewport
);
MixedViewport
viewport
;
void
syncConstructorArguments
(
TestComponent
source
)
{
viewport
=
source
.
viewport
;
}
bool
_flag
=
true
;
void
go
(
bool
flag
)
{
setState
(()
{
_flag
=
flag
;
});
}
Widget
build
()
{
return
_flag
?
viewport
:
new
Text
(
'Not Today'
);
}
}
void
main
(
)
{
test
(
'MixedViewport mount/dismount smoke test'
,
()
{
WidgetTester
tester
=
new
WidgetTester
();
MixedViewportLayoutState
layoutState
=
new
MixedViewportLayoutState
();
List
<
int
>
callbackTracker
=
<
int
>[];
// the root view is 800x600 in the test environment
// so if our widget is 100 pixels tall, it should fit exactly 6 times.
TestComponent
testComponent
;
Widget
builder
()
{
testComponent
=
new
TestComponent
(
new
MixedViewport
(
builder:
(
int
i
)
{
callbackTracker
.
add
(
i
);
return
new
Container
(
key:
new
ValueKey
<
int
>(
i
),
height:
100.0
,
child:
new
Text
(
"
$i
"
)
);
},
startOffset:
0.0
,
layoutState:
layoutState
));
return
testComponent
;
}
tester
.
pumpFrame
(
builder
);
expect
(
callbackTracker
,
equals
([
0
,
1
,
2
,
3
,
4
,
5
]));
callbackTracker
.
clear
();
testComponent
.
go
(
false
);
tester
.
pumpFrameWithoutChange
();
expect
(
callbackTracker
,
equals
([]));
callbackTracker
.
clear
();
testComponent
.
go
(
true
);
tester
.
pumpFrameWithoutChange
();
expect
(
callbackTracker
,
equals
([
0
,
1
,
2
,
3
,
4
,
5
]));
});
test
(
'MixedViewport vertical'
,
()
{
WidgetTester
tester
=
new
WidgetTester
();
MixedViewportLayoutState
layoutState
=
new
MixedViewportLayoutState
();
List
<
int
>
callbackTracker
=
<
int
>[];
// the root view is 800x600 in the test environment
// so if our widget is 200 pixels tall, it should fit exactly 3 times.
// but if we are offset by 300 pixels, there will be 4, numbered 1-4.
double
offset
=
300.0
;
IndexedBuilder
itemBuilder
=
(
int
i
)
{
callbackTracker
.
add
(
i
);
return
new
Container
(
key:
new
ValueKey
<
int
>(
i
),
width:
500.0
,
// this should be ignored
height:
200.0
,
child:
new
Text
(
"
$i
"
)
);
};
TestComponent
testComponent
;
Widget
builder
()
{
testComponent
=
new
TestComponent
(
new
MixedViewport
(
builder:
itemBuilder
,
startOffset:
offset
,
layoutState:
layoutState
));
return
testComponent
;
}
tester
.
pumpFrame
(
builder
);
// 0 is built to find its width
expect
(
callbackTracker
,
equals
([
0
,
1
,
2
,
3
,
4
]));
callbackTracker
.
clear
();
offset
=
400.0
;
// now only 3 should fit, numbered 2-4.
tester
.
pumpFrame
(
builder
);
// 0 and 1 aren't built, we know their size and nothing else changed
expect
(
callbackTracker
,
equals
([
2
,
3
,
4
]));
callbackTracker
.
clear
();
});
test
(
'MixedViewport horizontal'
,
()
{
WidgetTester
tester
=
new
WidgetTester
();
MixedViewportLayoutState
layoutState
=
new
MixedViewportLayoutState
();
List
<
int
>
callbackTracker
=
<
int
>[];
// the root view is 800x600 in the test environment
// so if our widget is 200 pixels wide, it should fit exactly 4 times.
// but if we are offset by 300 pixels, there will be 5, numbered 1-5.
double
offset
=
300.0
;
IndexedBuilder
itemBuilder
=
(
int
i
)
{
callbackTracker
.
add
(
i
);
return
new
Container
(
key:
new
ValueKey
<
int
>(
i
),
height:
500.0
,
// this should be ignored
width:
200.0
,
child:
new
Text
(
"
$i
"
)
);
};
TestComponent
testComponent
;
Widget
builder
()
{
testComponent
=
new
TestComponent
(
new
MixedViewport
(
builder:
itemBuilder
,
startOffset:
offset
,
layoutState:
layoutState
,
direction:
ScrollDirection
.
horizontal
));
return
testComponent
;
}
tester
.
pumpFrame
(
builder
);
// 0 is built to find its width
expect
(
callbackTracker
,
equals
([
0
,
1
,
2
,
3
,
4
,
5
]));
callbackTracker
.
clear
();
offset
=
400.0
;
// now only 4 should fit, numbered 2-5.
tester
.
pumpFrame
(
builder
);
// 0 and 1 aren't built, we know their size and nothing else changed
expect
(
callbackTracker
,
equals
([
2
,
3
,
4
,
5
]));
callbackTracker
.
clear
();
});
}
packages/unit/test/widget/widget_tester.dart
View file @
fc7943fe
...
...
@@ -123,4 +123,8 @@ class WidgetTester {
scheduler
.
beginFrame
(
frameTimeMs
);
}
void
pumpFrameWithoutChange
([
double
frameTimeMs
=
0.0
])
{
scheduler
.
beginFrame
(
frameTimeMs
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment