//! Literal search, smart case, command-line editing and substitution contracts. mod support; use notescraft_vim::Mode; #[test] fn searches_wrap_and_repeat() { support::check( &[ ("|one two one", "/one", "one two |one"), ("|one two one", "/onen", "|one two one"), ("|one two one", "/oneN", "|one two one"), ("|one two one", "?one", "one two |one"), ("one two |one", "?one", "|one two one"), ("|one two one two one", "/onen", "one two one two |one"), ("|one two one two one", "/one2n", "|one two one two one"), ("|One one ONE", "/one", "One |one ONE"), ("|One one ONE", "/ONE", "One one |ONE"), ("|One one ONE", "/onen", "One one |ONE"), ("|α 猫 α", "/α", "α 猫 |α"), ("|α 猫 α", "?α", "α 猫 |α"), ("|a.b axb a.b", "/a.b", "a.b axb |a.b"), ("|one two one", "*", "one two |one"), ("o|ne two one", "*", "one two |one"), ("|éé 猫 éé", "*", "éé 猫 |éé"), ("|one two", "/absent", "|one two"), ("|one two", "/one", "|one two"), ("|one two", "nN", "|one two"), ("|one two one", "/onxe", "one two |one"), ("|one two one", "/one:noh", "one two |one"), ("|one two", "/", "|one two"), ], Mode::Normal, ); } #[test] fn substitutions_and_line_jumps() { support::check( &[ ("|a a", ":s/a/b/", "|b a"), ("|a a", ":s/a/b/g", "|b b"), ("a a\n|a a", ":s/a/b/", "a a\n|b a"), ("|a a\na a", ":%s/a/b/", "|b a\nb a"), ("|a a\na a", ":%s/a/b/g", "|b b\nb b"), ("|é é", ":s/é/猫/g", "|猫 猫"), ("|a/b", ":s/a\\/b/c/", "|c"), ("|aaa", ":s/a//g", "|"), ("|abc", ":s/z/a/", "|abc"), ("|abc", ":s//a/", "|abc"), ("|abc", ":s/a/b/z", "|abc"), ("|abc", ":%s", "|abc"), ("|a\nb\nc", ":2", "a\n|b\nc"), ("a\nb\n|c", ":1", "|a\nb\nc"), ("|a\nb\nc", ":3", "a\nb\n|c"), ("|a\nb", ":0", "|a\nb"), ("|a\nb", ":9", "|a\nb"), ("|abc", ":s/a/b/", "|abc"), ("|a a", ":s/a/b/u", "|a a"), ("|a a", ":s/a/b/u", "|b a"), ], Mode::Normal, ); }