11// Copyright 2024 the Parley Authors
22// SPDX-License-Identifier: Apache-2.0 OR MIT
33
4- use crate :: { testenv, Alignment , InlineBox } ;
4+ use crate :: { testenv, Alignment , InlineBox , WhiteSpaceCollapse } ;
55
66#[ test]
77fn plain_multiline_text ( ) {
88 let mut env = testenv ! ( ) ;
99
1010 let text = "Hello world!\n Line 2\n Line 4" ;
11- let mut builder = env. builder ( text) ;
11+ let mut builder = env. ranged_builder ( text) ;
1212 let mut layout = builder. build ( text) ;
1313 layout. break_all_lines ( None ) ;
1414 layout. align (
@@ -31,7 +31,7 @@ fn placing_inboxes() {
3131 ( 13 , "start_nl" ) ,
3232 ] {
3333 let text = "Hello world!\n Line 2\n Line 4" ;
34- let mut builder = env. builder ( text) ;
34+ let mut builder = env. ranged_builder ( text) ;
3535 builder. push_inline_box ( InlineBox {
3636 id : 0 ,
3737 index : position,
@@ -54,7 +54,7 @@ fn only_inboxes_wrap() {
5454 let mut env = testenv ! ( ) ;
5555
5656 let text = "" ;
57- let mut builder = env. builder ( text) ;
57+ let mut builder = env. ranged_builder ( text) ;
5858 for id in 0 ..10 {
5959 builder. push_inline_box ( InlineBox {
6060 id,
@@ -80,7 +80,7 @@ fn full_width_inbox() {
8080
8181 for ( width, test_case_name) in [ ( 99. , "smaller" ) , ( 100. , "exact" ) , ( 101. , "larger" ) ] {
8282 let text = "ABC" ;
83- let mut builder = env. builder ( text) ;
83+ let mut builder = env. ranged_builder ( text) ;
8484 builder. push_inline_box ( InlineBox {
8585 id : 0 ,
8686 index : 1 ,
@@ -115,7 +115,7 @@ fn trailing_whitespace() {
115115 let mut env = testenv ! ( ) ;
116116
117117 let text = "AAA BBB" ;
118- let mut builder = env. builder ( text) ;
118+ let mut builder = env. ranged_builder ( text) ;
119119 let mut layout = builder. build ( text) ;
120120 layout. break_all_lines ( Some ( 45. ) ) ;
121121 layout. align ( None , Alignment :: Start , false ) ;
@@ -127,3 +127,31 @@ fn trailing_whitespace() {
127127
128128 env. check_layout_snapshot ( & layout) ;
129129}
130+
131+ #[ test]
132+ fn leading_whitespace ( ) {
133+ let mut env = testenv ! ( ) ;
134+
135+ for ( mode, test_case_name) in [
136+ ( WhiteSpaceCollapse :: Preserve , "preserve" ) ,
137+ ( WhiteSpaceCollapse :: Collapse , "collapse" ) ,
138+ ] {
139+ let mut builder = env. tree_builder ( ) ;
140+ builder. set_white_space_mode ( mode) ;
141+ builder. push_text ( "Line 1" ) ;
142+ builder. push_style_modification_span ( None ) ;
143+ builder. set_white_space_mode ( WhiteSpaceCollapse :: Preserve ) ;
144+ builder. push_text ( "\n " ) ;
145+ builder. pop_style_span ( ) ;
146+ builder. set_white_space_mode ( mode) ;
147+ builder. push_text ( " Line 2" ) ;
148+ let ( mut layout, _) = builder. build ( ) ;
149+ layout. break_all_lines ( None ) ;
150+ layout. align (
151+ None ,
152+ Alignment :: Start ,
153+ false , /* align_when_overflowing */
154+ ) ;
155+ env. with_name ( test_case_name) . check_layout_snapshot ( & layout) ;
156+ }
157+ }
0 commit comments