/*
 * Copyright (C) 2007 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.frameworktest.layout.linear;

import android.app.Activity;
import android.test.ActivityInstrumentationTestCase;
import android.test.suitebuilder.annotation.MediumTest;
import android.view.View;
import android.widget.ImageButton;

import com.android.frameworktest.R;
import com.android.frameworktest.layout.linear.BaselineButtons;

public class BaselineButtonsTest extends ActivityInstrumentationTestCase<BaselineButtons> {
    private View mCurrentTime;
    private View mTotalTime;
    private ImageButton mPrev;
    private ImageButton mNext;
    private ImageButton mPause;
    private View mLayout;

    public BaselineButtonsTest() {
        super("com.android.frameworktest", BaselineButtons.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();

        final Activity activity = getActivity();
        mCurrentTime = activity.findViewById(R.id.currenttime);
        mTotalTime = activity.findViewById(R.id.totaltime);
        mPrev = (ImageButton) activity.findViewById(R.id.prev);
        mNext = (ImageButton) activity.findViewById(R.id.next);
        mPause = (ImageButton) activity.findViewById(R.id.pause);
        mLayout = activity.findViewById(R.id.layout);
    }

    @MediumTest
    public void testPreconditions() {
        assertNotNull(mCurrentTime);    
        assertNotNull(mTotalTime);  
        assertNotNull(mPrev);  
        assertNotNull(mNext);  
        assertNotNull(mPause);  
        assertNotNull(mLayout);  
    }
    
    @MediumTest
    public void testLayout() {
        int pauseHeight =  Math.max(mPause.getDrawable().getIntrinsicHeight()
                + mPause.getPaddingTop() + mPause.getPaddingBottom(),
                mPause.getBackground().getMinimumHeight());
        int prevHeight = Math.max(mPrev.getDrawable().getIntrinsicHeight() + mPrev.getPaddingTop()
                + mPrev.getPaddingBottom(),
                mPrev.getBackground().getMinimumHeight());
        int nextHeight = Math.max(mNext.getDrawable().getIntrinsicHeight() + mNext.getPaddingTop()
                + mNext.getPaddingBottom(),
                mNext.getBackground().getMinimumHeight());
        assertEquals("Layout incorrect height", pauseHeight, mLayout.getHeight()); 
        assertEquals("Pause incorrect height", pauseHeight, mPause.getHeight()); 
        assertEquals("Prev incorrect height", prevHeight, mPrev.getHeight()); 
        assertEquals("Next incorrect height", nextHeight, mNext.getHeight()); 
        assertEquals("Pause wrong top", 0, mPause.getTop()); 
        assertEquals("Prev wrong top", (pauseHeight - prevHeight) / 2, mPrev.getTop());
        assertEquals("Next wrong top", (pauseHeight - nextHeight) / 2, mNext.getTop());
        assertEquals("CurrentTime wrong bottom",  pauseHeight, mCurrentTime.getBottom());
        assertEquals("TotalTime wrong bottom",  pauseHeight, mTotalTime.getBottom());
        assertTrue("CurrentTime too tall", mCurrentTime.getTop() > 0);
        assertTrue("TotalTime too tall", mTotalTime.getTop() > 0);
    }
}
