Mercurial > jhg
view test/org/tmatesoft/hg/test/OutputParser.java @ 475:0e34b8f3946a
Tests for MqManager
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 12 Jul 2012 16:57:40 +0200 |
parents | df5009d67be2 |
children | e74580e24feb |
line wrap: on
line source
/* * Copyright (c) 2011-2012 TMate Software Ltd * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * For information on how to redistribute this software under * the terms of a license other than GNU General Public License * contact TMate Software at support@hg4j.com */ package org.tmatesoft.hg.test; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author Artem Tikhomirov * @author TMate Software Ltd. */ public interface OutputParser { public void parse(CharSequence seq); public class Stub implements OutputParser { private boolean shallDump; private CharSequence result; public Stub() { this(false); } public Stub(boolean dump) { shallDump = dump; } public void parse(CharSequence seq) { result = seq; if (shallDump) { System.out.println(seq); } // else no-op } public CharSequence result() { return result; } public Iterable<String> lines() { return lines("(.+)$"); } public Iterable<String> lines(String pattern) { final Matcher m = Pattern.compile(pattern, Pattern.MULTILINE).matcher(result); class S implements Iterable<String>, Iterator<String> { public Iterator<String> iterator() { return this; } private boolean next; { next = m.find(); } public boolean hasNext() { return next; } public String next() { if (next) { String rv = m.group(); next = m.find(); return rv; } throw new NoSuchElementException(); } public void remove() { throw new UnsupportedOperationException(); } }; return new S(); } } }