@@ -190,6 +190,14 @@ class StringTest : public SparkFunctionBaseTest {
190190 std::optional<int32_t > size) {
191191 return evaluateOnce<std::string>(" lpad(c0, c1)" , string, size);
192192 }
193+
194+ std::optional<std::string> replace (
195+ std::optional<std::string> str,
196+ std::optional<std::string> replaced,
197+ std::optional<std::string> replacement) {
198+ return evaluateOnce<std::string>(
199+ " replace(c0, c1, c2)" , str, replaced, replacement);
200+ }
193201};
194202
195203TEST_F (StringTest, Ascii) {
@@ -682,5 +690,19 @@ TEST_F(StringTest, translateNonconstantMatch) {
682690 expected = makeFlatVector<std::string>({" åbaæçè" , " åæcèaç" });
683691 testTranslate ({input, match, replace}, expected);
684692}
693+
694+ TEST_F (StringTest, replace) {
695+ EXPECT_EQ (replace (" aaabaac" , " a" , " z" ), " zzzbzzc" );
696+ EXPECT_EQ (replace (" aaabaac" , " " , " z" ), " aaabaac" );
697+ EXPECT_EQ (replace (" aaabaac" , " a" , " " ), " bc" );
698+ EXPECT_EQ (replace (" aaabaac" , " x" , " z" ), " aaabaac" );
699+ EXPECT_EQ (replace (" aaabaac" , " ab" , " z" ), " aazaac" );
700+ EXPECT_EQ (replace (" aaabaac" , " aa" , " z" ), " zabzc" );
701+ EXPECT_EQ (replace (" aaabaac" , " aa" , " xyz" ), " xyzabxyzc" );
702+ EXPECT_EQ (replace (" aaabaac" , " aaabaac" , " z" ), " z" );
703+ EXPECT_EQ (
704+ replace (" 123\u6570\u6570\u636E " , " \u6570\u636E " , " data" ),
705+ " 123\u6570 data" );
706+ }
685707} // namespace
686708} // namespace facebook::velox::functions::sparksql::test
0 commit comments