| /* |
| * Copyright (C) 2008 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 com.android.mms.util; |
| |
| import java.nio.IntBuffer; |
| |
| import android.graphics.Bitmap; |
| import android.graphics.drawable.BitmapDrawable; |
| import android.test.AndroidTestCase; |
| import android.test.suitebuilder.annotation.SmallTest; |
| import android.text.SpannableStringBuilder; |
| import android.text.style.ImageSpan; |
| |
| import com.android.internal.widget.Smileys; |
| |
| /** |
| * This is a series of unit tests for the SmileyParser class. |
| * |
| * This is just unit tests of the SmileyParser - the activity is not instantiated |
| */ |
| @SmallTest |
| public class SmileyParserUnitTests extends AndroidTestCase { |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| |
| SmileyParser.init(getContext()); |
| } |
| |
| /** |
| * Test of smiley strings. |
| */ |
| public void testSmileyParser() { |
| SmileyParser parser = SmileyParser.getInstance(); |
| SpannableStringBuilder buf = new SpannableStringBuilder(); |
| |
| // Put a string that looks kind of like a smiley in between two valid smileys. |
| buf.append(parser.addSmileySpans(":-):-:-(")); |
| |
| ImageSpan[] spans = buf.getSpans(0, buf.length(), ImageSpan.class); |
| |
| assertTrue("Smiley (happy) bitmaps aren't equal", |
| compareImageSpans(new ImageSpan(mContext, |
| Smileys.getSmileyResource(Smileys.HAPPY)), spans[0])); |
| |
| assertTrue("Smiley (sad) bitmaps aren't equal", |
| compareImageSpans(new ImageSpan(mContext, |
| Smileys.getSmileyResource(Smileys.SAD)), spans[1])); |
| } |
| |
| private boolean compareImageSpans(ImageSpan span1, ImageSpan span2) { |
| BitmapDrawable bitmapDrawable1 = (BitmapDrawable)span1.getDrawable(); |
| BitmapDrawable bitmapDrawable2 = (BitmapDrawable)span2.getDrawable(); |
| Bitmap bitmap1 = bitmapDrawable1.getBitmap(); |
| Bitmap bitmap2 = bitmapDrawable2.getBitmap(); |
| |
| int rowBytes1 = bitmap1.getRowBytes(); |
| int rowBytes2 = bitmap2.getRowBytes(); |
| if (rowBytes1 != rowBytes2) { |
| return false; |
| } |
| int height1 = bitmap1.getHeight(); |
| int height2 = bitmap2.getHeight(); |
| if (height1 != height2) { |
| return false; |
| } |
| int size = height1 * rowBytes1; |
| int[] intArray1 = new int[size]; |
| int[] intArray2 = new int[size]; |
| IntBuffer intBuf1 = IntBuffer.wrap(intArray1); |
| IntBuffer intBuf2 = IntBuffer.wrap(intArray2); |
| |
| bitmap1.copyPixelsToBuffer(intBuf1); |
| bitmap2.copyPixelsToBuffer(intBuf2); |
| |
| for (int i = 0; i < size; i++) { |
| if (intArray1[i] != intArray2[i]) { |
| return false; |
| } |
| } |
| return true; |
| } |
| |
| } |