diff options
author | Narayan Kamath <narayan@google.com> | 2015-01-12 17:15:45 +0000 |
---|---|---|
committer | Narayan Kamath <narayan@google.com> | 2015-01-20 15:57:27 +0000 |
commit | 1895955344b23f4d8a01596906a62f521c5463ef (patch) | |
tree | 8b3e99995b3fd4c184a81f2669170d1cc176ec3f /luni | |
parent | 9169032f055cb8f007fcb9df979518177e22c833 (diff) | |
download | libcore-1895955344b23f4d8a01596906a62f521c5463ef.zip libcore-1895955344b23f4d8a01596906a62f521c5463ef.tar.gz libcore-1895955344b23f4d8a01596906a62f521c5463ef.tar.bz2 |
Add a unit test to demonstrate ICU CharsetProvider problems
Also add a single FakeCharsetProvider for unit tests that
does nothing by default, so that we can stub it in for tests
that do care about it and none of our other tests are affected.
Change-Id: I03abb8f1aff53c160935b4cdbeaef764d30f240a
Diffstat (limited to 'luni')
-rw-r--r-- | luni/src/test/java/libcore/java/nio/charset/SettableCharsetProvider.java | 57 | ||||
-rw-r--r-- | luni/src/test/resources/META-INF/services/java.nio.charset.spi.CharsetProvider | 1 |
2 files changed, 58 insertions, 0 deletions
diff --git a/luni/src/test/java/libcore/java/nio/charset/SettableCharsetProvider.java b/luni/src/test/java/libcore/java/nio/charset/SettableCharsetProvider.java new file mode 100644 index 0000000..b4886d2 --- /dev/null +++ b/luni/src/test/java/libcore/java/nio/charset/SettableCharsetProvider.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package libcore.java.nio.charset; + +import java.nio.charset.Charset; +import java.nio.charset.spi.CharsetProvider; +import java.util.Collections; +import java.util.Iterator; + +/** + * This class is registered as a charset provider by the META-INF in the libcore + * tests jar. Since there isn't any convenient API to dynamically register and de-register + * charset-providers, this class allows tests to plug in a delegate that lives for the + * duration of the test. + */ +public final class SettableCharsetProvider extends CharsetProvider { + private static CharsetProvider delegate; + + public static void setDelegate(CharsetProvider cp) { + delegate = cp; + } + + public static void clearDelegate() { + delegate = null; + } + + @Override + public Iterator<Charset> charsets() { + if (delegate != null) { + return delegate.charsets(); + } + + return Collections.emptyIterator(); + } + + @Override + public Charset charsetForName(String charsetName) { + if (delegate != null) { + return delegate.charsetForName(charsetName); + } + + return null; + } +} diff --git a/luni/src/test/resources/META-INF/services/java.nio.charset.spi.CharsetProvider b/luni/src/test/resources/META-INF/services/java.nio.charset.spi.CharsetProvider new file mode 100644 index 0000000..1a53312 --- /dev/null +++ b/luni/src/test/resources/META-INF/services/java.nio.charset.spi.CharsetProvider @@ -0,0 +1 @@ +libcore.java.nio.charset.SettableCharsetProvider |