11579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner# Copyright (C) 2010 The Android Open Source Project
21579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner#
31579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner# Licensed under the Apache License, Version 2.0 (the "License");
41579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner# you may not use this file except in compliance with the License.
51579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner# You may obtain a copy of the License at
61579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner#
71579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner#      http://www.apache.org/licenses/LICENSE-2.0
81579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner#
91579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner# Unless required by applicable law or agreed to in writing, software
101579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner# distributed under the License is distributed on an "AS IS" BASIS,
111579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner# See the License for the specific language governing permissions and
131579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner# limitations under the License.
141579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner#
151579cd933a0e3a1bdd494a312fb5b9e75a03be87David 'Digit' Turner
166506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner# This script is used to check that a given awk executable
176506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner# implements the match() and substr() functions appropriately.
186506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner#
196506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner# These were introduced in nawk/gawk, but the original awk
206506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner# does not have them.
216506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner#
2235f944d26f33fff3e59ab449c991b18260a5fa0bDavid 'Digit' TurnerBEGIN {
236506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner    RSTART=0
246506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner    RLENGTH=0
256506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner    s1="A real world example"
266506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner    if (! match(s1,"world")) {
276506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner        print "Fail match"
286506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner    } else if (RSTART != 8) {
296506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner        print "Fail RSTART ="RSTART
306506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner    } else if (RLENGTH != 5) {
316506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner        print "Fail RLENGTH ="RLENGTH
326506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner    } else {
336506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner        s2=substr(s1,RSTART,RLENGTH)
346506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner        if (s2 != "world") {
356506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner            print "Fail substr="s2
366506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner        } else {
376506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner            print "Pass"
386506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner        }
396506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner    }
406506b6ab90f788b9f3796760f0f3762c2b74699bDavid 'Digit' Turner}
41