@@ -1116,6 +1116,69 @@ mod tests {
11161116 assert_document_integrity ( & doc) ;
11171117 }
11181118
1119+ #[ test]
1120+ fn comment_at_begin ( ) {
1121+ let path = PgTPath :: new ( "test.sql" ) ;
1122+
1123+ let mut doc = Document :: new ( path. clone ( ) , "-- Add new schema named \" private\" \n CREATE SCHEMA \" private\" ;" . to_string ( ) , 0 ) ;
1124+
1125+ let change = ChangeFileParams {
1126+ path : path. clone ( ) ,
1127+ version : 1 ,
1128+ changes : vec ! [ ChangeParams {
1129+ text: "" . to_string( ) ,
1130+ range: Some ( TextRange :: new( 0 . into( ) , 1 . into( ) ) ) ,
1131+ } ] ,
1132+ } ;
1133+
1134+ let changed = doc. apply_file_change ( & change) ;
1135+
1136+ assert_eq ! ( doc. content, "- Add new schema named \" private\" \n CREATE SCHEMA \" private\" ;" ) ;
1137+
1138+ assert_eq ! ( changed. len( ) , 3 ) ;
1139+ assert ! ( matches!(
1140+ changed[ 0 ] ,
1141+ StatementChange :: Deleted ( Statement { id: 0 , .. } )
1142+ ) ) ;
1143+ assert ! ( matches!(
1144+ changed[ 1 ] ,
1145+ StatementChange :: Added ( AddedStatement { .. } )
1146+ ) ) ;
1147+ assert ! ( matches!(
1148+ changed[ 2 ] ,
1149+ StatementChange :: Added ( AddedStatement { .. } )
1150+ ) ) ;
1151+
1152+ let change_2 = ChangeFileParams {
1153+ path : path. clone ( ) ,
1154+ version : 2 ,
1155+ changes : vec ! [ ChangeParams {
1156+ text: "-" . to_string( ) ,
1157+ range: Some ( TextRange :: new( 0 . into( ) , 0 . into( ) ) ) ,
1158+ } ] ,
1159+ } ;
1160+
1161+ let changed_2 = doc. apply_file_change ( & change_2) ;
1162+
1163+ assert_eq ! ( doc. content, "-- Add new schema named \" private\" \n CREATE SCHEMA \" private\" ;" ) ;
1164+
1165+ assert_eq ! ( changed_2. len( ) , 3 ) ;
1166+ assert ! ( matches!(
1167+ changed_2[ 0 ] ,
1168+ StatementChange :: Deleted ( Statement { .. } )
1169+ ) ) ;
1170+ assert ! ( matches!(
1171+ changed_2[ 1 ] ,
1172+ StatementChange :: Deleted ( Statement { .. } )
1173+ ) ) ;
1174+ assert ! ( matches!(
1175+ changed_2[ 2 ] ,
1176+ StatementChange :: Added ( AddedStatement { .. } )
1177+ ) ) ;
1178+
1179+ assert_document_integrity ( & doc) ;
1180+ }
1181+
11191182 #[ test]
11201183 fn apply_changes_within_statement ( ) {
11211184 let input = "select id from users;\n select * from contacts;" ;
0 commit comments