@@ -1102,3 +1102,123 @@ hello
1102
1102
██████████████████████████████████████████████████████████████████████████ 10/10"
1103
1103
) ;
1104
1104
}
1105
+
1106
+ #[ test]
1107
+ fn multi_progress_many_bars ( ) {
1108
+ let in_mem = InMemoryTerm :: new ( 4 , 80 ) ;
1109
+ let mp =
1110
+ MultiProgress :: with_draw_target ( ProgressDrawTarget :: term_like ( Box :: new ( in_mem. clone ( ) ) ) ) ;
1111
+
1112
+ let pb1 = mp. add ( ProgressBar :: new ( 10 ) . with_finish ( ProgressFinish :: AndLeave ) ) ;
1113
+ let mut spinners = vec ! [ ] ;
1114
+ for i in 0 ..7 {
1115
+ let spinner = ProgressBar :: new_spinner ( ) . with_message ( i. to_string ( ) ) ;
1116
+ mp. add ( spinner. clone ( ) ) ;
1117
+ spinners. push ( spinner) ;
1118
+ }
1119
+
1120
+ assert_eq ! ( in_mem. contents( ) , String :: new( ) ) ;
1121
+
1122
+ pb1. tick ( ) ;
1123
+ assert_eq ! (
1124
+ in_mem. contents( ) ,
1125
+ r#"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0/10"#
1126
+ ) ;
1127
+
1128
+ for spinner in & spinners {
1129
+ spinner. tick ( )
1130
+ }
1131
+
1132
+ assert_eq ! (
1133
+ in_mem. contents( ) ,
1134
+ r#"
1135
+ ⠁ 3
1136
+ ⠁ 4
1137
+ ⠁ 5
1138
+ ⠁ 6"#
1139
+ . trim_start( )
1140
+ ) ;
1141
+
1142
+ drop ( pb1) ;
1143
+ assert_eq ! (
1144
+ in_mem. contents( ) ,
1145
+ r#"
1146
+ ⠁ 3
1147
+ ⠁ 4
1148
+ ⠁ 5
1149
+ ⠁ 6"#
1150
+ . trim_start( )
1151
+ ) ;
1152
+
1153
+ drop ( spinners) ;
1154
+
1155
+ assert_eq ! ( in_mem. contents( ) , r#""# ) ;
1156
+ }
1157
+
1158
+ #[ test]
1159
+ fn multi_progress_many_spinners ( ) {
1160
+ let in_mem = InMemoryTerm :: new ( 4 , 80 ) ;
1161
+ let mp =
1162
+ MultiProgress :: with_draw_target ( ProgressDrawTarget :: term_like ( Box :: new ( in_mem. clone ( ) ) ) ) ;
1163
+
1164
+ let pb1 = mp. add ( ProgressBar :: new ( 10 ) . with_finish ( ProgressFinish :: AndLeave ) ) ;
1165
+ let mut spinners = vec ! [ ] ;
1166
+ for i in 0 ..7 {
1167
+ let spinner = ProgressBar :: new_spinner ( ) . with_message ( i. to_string ( ) ) ;
1168
+ mp. add ( spinner. clone ( ) ) ;
1169
+ spinners. push ( spinner) ;
1170
+ }
1171
+
1172
+ assert_eq ! ( in_mem. contents( ) , String :: new( ) ) ;
1173
+
1174
+ pb1. tick ( ) ;
1175
+ assert_eq ! (
1176
+ in_mem. contents( ) ,
1177
+ r#"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0/10"#
1178
+ ) ;
1179
+
1180
+ for spinner in & spinners {
1181
+ spinner. tick ( )
1182
+ }
1183
+
1184
+ assert_eq ! (
1185
+ in_mem. contents( ) ,
1186
+ r#"
1187
+ ⠁ 3
1188
+ ⠁ 4
1189
+ ⠁ 5
1190
+ ⠁ 6"#
1191
+ . trim_start( )
1192
+ ) ;
1193
+
1194
+ spinners. remove ( 3 ) ;
1195
+
1196
+ assert_eq ! (
1197
+ in_mem. contents( ) ,
1198
+ r#"
1199
+ ⠁ 2
1200
+ ⠁ 4
1201
+ ⠁ 5
1202
+ ⠁ 6"#
1203
+ . trim_start( )
1204
+ ) ;
1205
+
1206
+ spinners. remove ( 4 ) ;
1207
+
1208
+ assert_eq ! (
1209
+ in_mem. contents( ) ,
1210
+ r#"
1211
+ ⠁ 1
1212
+ ⠁ 2
1213
+ ⠁ 4
1214
+ ⠁ 6"#
1215
+ . trim_start( )
1216
+ ) ;
1217
+
1218
+ drop ( spinners) ;
1219
+
1220
+ assert_eq ! (
1221
+ in_mem. contents( ) ,
1222
+ r#"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0/10"#
1223
+ ) ;
1224
+ }
0 commit comments