SHARE
TWEET

Test of parse_replacement

hakonhagland Mar 15th, 2015 278 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ---------------------------------------------------------------
  2. Perl code for running test of the parse_replacement sub routine
  3. ---------------------------------------------------------------
  4.  
  5. use feature qw(say);
  6. use strict;
  7. use warnings;
  8.  
  9. use Carp;
  10. use Data::Dump qw(dd dump);
  11. use Scalar::Util 'reftype';
  12.  
  13. # Test cases:
  14. # Format:
  15. #   string, regex, replacement, expected
  16. my @test_cases = (
  17.     ['aba', 'a(.*?)a', '$1', 'b'],
  18.     ['ababaxxa', 'a(.*?)a', '$1', 'bxx'],
  19.     ['acccb','a(.*?)b', '$1\$', 'ccc$'],
  20.     ['abxybaxy','(x)(y)', '${2}3$1', 'aby3xbay3x']
  21. );
  22.  
  23. for (0..$#test_cases) {
  24.     say "Case " . ($_ + 1);
  25.     say "--------";
  26.     my ($str, $regex, $replacement, $expected_result) = @{$test_cases[$_]};
  27.     say "String: '$str'";
  28.     say "Regex: " . dump($regex);
  29.     say "Replacement: '$replacement'";
  30.     say "Expected: '$expected_result'";
  31.     my @captures = $str =~ /$regex/g;
  32.     say "Captures: " . dump(@captures);
  33.     my $func = parse_replacement( $replacement );
  34.     my $result = $func->(\@captures);
  35.     say "Result1: '$result'";
  36.     $str =~ s/$regex/$result/g;
  37.     say "Result2: '$str'";
  38.     say "Test result: " . (($expected_result eq $str) ? "passed" : "failed");
  39.     say "";
  40. }
  41.  
  42.  
  43. ************************
  44. Output:
  45. ************************
  46.  
  47. Case 1
  48. --------
  49. String: 'aba'
  50. Regex: "a(.*?)a"
  51. Replacement: '$1'
  52. Expected: 'b'
  53. Captures: "b"
  54. Result1: 'b'
  55. Result2: 'b'
  56. Test result: passed
  57.  
  58. Case 2
  59. --------
  60. String: 'ababaxxa'
  61. Regex: "a(.*?)a"
  62. Replacement: '$1'
  63. Expected: 'bxx'
  64. Captures: ("b", "xx")
  65. Result1: 'b'
  66. Result2: 'bbb'
  67. Test result: failed
  68.  
  69. Case 3
  70. --------
  71. String: 'acccb'
  72. Regex: "a(.*?)b"
  73. Replacement: '$1\$'
  74. Expected: 'ccc$'
  75. Captures: "ccc"
  76. Result1: 'ccc$'
  77. Result2: 'ccc$'
  78. Test result: passed
  79.  
  80. Case 4
  81. --------
  82. String: 'abxybaxy'
  83. Regex: "(x)(y)"
  84. Replacement: '${2}3$1'
  85. Expected: 'aby3xbay3x'
  86. Captures: ("x", "y", "x", "y")
  87. Result1: 'y3x'
  88. Result2: 'aby3xbay3x'
  89. Test result: passed
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top