Package org.gstreamer

Source Code of org.gstreamer.QueryTest

/*
* Copyright (c) 2009 Levente Farkas
* Copyright (c) 2008 Wayne Meissner
*
* This file is part of gstreamer-java.
*
* gstreamer-java is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gstreamer-java 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with gstreamer-java.  If not, see <http://www.gnu.org/licenses/>.
*/

package org.gstreamer;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.List;
import java.util.concurrent.TimeUnit;

import org.gstreamer.lowlevel.GstMiniObjectAPI;
import org.gstreamer.lowlevel.GstQueryAPI;
import org.gstreamer.lowlevel.GstNative;
import org.gstreamer.query.ApplicationQuery;
import org.gstreamer.query.DurationQuery;
import org.gstreamer.query.FormatsQuery;
import org.gstreamer.query.LatencyQuery;
import org.gstreamer.query.PositionQuery;
import org.gstreamer.query.SeekingQuery;
import org.gstreamer.query.SegmentQuery;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

/**
*
* @author wayne
*/
public class QueryTest {
   
    public QueryTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
        Gst.init("QueryTest", new String[] {});
    }
   
    @AfterClass
    public static void tearDownClass() throws Exception {
        Gst.deinit();
    }

    @Before
    public void setUp() {
    }

    @After
    public void tearDown() {
    }
   
    @Test
    public void gst_query_new_position() {
        Query query = GstQueryAPI.GSTQUERY_API.gst_query_new_position(Format.TIME);
        assertNotNull("Query.newPosition returned null", query);
        assertTrue("Returned query not instance of PositionQuery", query instanceof PositionQuery);
    }
    @Test
    public void getPositionQueryFormat() {
        for (Format format : Format.values()) {
            PositionQuery query = new PositionQuery(format);
            assertEquals("Format returned from getFormat() is incorrect" , format, query.getFormat());
        }
    }
    @Test
    public void getPosition() {
        PositionQuery query = new PositionQuery(Format.TIME);
        final long POSITION = 0xdeadbeef;
        query.setPosition(Format.TIME, POSITION);
        assertEquals("Incorrect position returned", POSITION, query.getPosition());
    }
    @Test
    public void positionQueryToString() {
        PositionQuery query = new PositionQuery(Format.TIME);
        query.setPosition(Format.TIME, 1234);
        String s = query.toString();
        assertTrue("toString() did not return format", s.contains("format=TIME"));
        assertTrue("toString() did not return position", s.contains("position=1234"));
    }
    @Test
    public void newDurationQuery() {
        Query query = new DurationQuery(Format.TIME);
        assertNotNull("Query.newDuration returned null", query);
        assertTrue("Returned query not instance of DurationQuery", query instanceof DurationQuery);
    }
    @Test
    public void gst_query_new_duration() {
        Query query = GstQueryAPI.GSTQUERY_API.gst_query_new_duration(Format.TIME);
        assertNotNull("Query.newDuration returned null", query);
        assertTrue("Returned query not instance of DurationQuery", query instanceof DurationQuery);
    }
   
    @Test
    public void getDurationQueryFormat() {
        for (Format format : Format.values()) {
            DurationQuery query = new DurationQuery(format);
            assertEquals("Format returned from getFormat() is incorrect" , format, query.getFormat());
        }
    }
    @Test
    public void getDuration() {
        DurationQuery query = new DurationQuery(Format.TIME);
        final long DURATION = 0xdeadbeef;
        query.setDuration(Format.TIME, DURATION);
        assertEquals("Incorrect duration returned", DURATION, query.getDuration());
    }
    @Test
    public void durationQueryToString() {
        DurationQuery query = new DurationQuery(Format.TIME);
        query.setDuration(Format.TIME, 1234);
        String s = query.toString();
        assertTrue("toString() did not return format", s.contains("format=TIME"));
        assertTrue("toString() did not return duration", s.contains("duration=1234"));
    }
    @Test
    public void gst_query_new_latency() {
        Query query = GstQueryAPI.GSTQUERY_API.gst_query_new_latency();
        assertNotNull("gst_query_new_latency() returned null", query);
        assertTrue("Returned query not instance of LatencyQuery", query instanceof LatencyQuery);
    }
    @Test
    public void latencyIsLive() {
        LatencyQuery query = new LatencyQuery();
        query.setLatency(true, ClockTime.ZERO, ClockTime.ZERO);
        assertTrue("isLive not set to true", query.isLive());
        query.setLatency(false, ClockTime.ZERO, ClockTime.ZERO);
        assertFalse("isLive not set to true", query.isLive());
    }
    @Test
    public void getMinimumLatency() {
        LatencyQuery query = new LatencyQuery();
        final ClockTime MIN = ClockTime.fromMillis(13000);
        query.setLatency(false, MIN, ClockTime.valueOf(~0L, TimeUnit.SECONDS));
        assertEquals("Min latency not set", MIN, query.getMinimumLatency());
    }
    @Test
    public void getMaximumLatency() {
        LatencyQuery query = new LatencyQuery();
        final ClockTime MAX = ClockTime.fromMillis(123000);
        query.setLatency(false, ClockTime.ZERO, MAX);
        assertEquals("Min latency not set", MAX, query.getMaximumLatency());
    }
    
    @Test
    public void latencyQueryToString() {
        LatencyQuery query = new LatencyQuery();
        ClockTime minLatency = ClockTime.fromMillis(13000);
        ClockTime maxLatency = ClockTime.fromMillis(200000);
        query.setLatency(true, minLatency, maxLatency);
        String s = query.toString();
        assertTrue("toString() did not return isLive", s.contains("live=true"));
        assertTrue("toString() did not return minLatency", s.contains("min=" + minLatency));
        assertTrue("toString() did not return minLatency", s.contains("max=" + maxLatency));
    }
    @Test public void applicationQuery() {
        QueryType type = GstQueryAPI.GSTQUERY_API.gst_query_type_register("application_test", "An application query");
        Structure s = new Structure("test");
        ApplicationQuery query = new ApplicationQuery(type, s);
        s = query.getStructure();
        query.dispose();
    }
    @Test public void segmentQuery() {
        SegmentQuery query = new SegmentQuery(Format.TIME);
        ClockTime end = ClockTime.fromMillis(1000);
        query.setSegment(1.0, Format.TIME, 0, end.toNanos());
        assertEquals("Format not set correctly", Format.TIME, query.getFormat());
        assertEquals("Start time not set correctly", 0, query.getStart());
        assertEquals("End time not set correctly", end.toNanos(), query.getEnd());
    }
    @Test public void seekingQuery() {
        SeekingQuery query = new SeekingQuery(Format.TIME);
        ClockTime start = ClockTime.ZERO;
        ClockTime end = ClockTime.fromMillis(1000);
        query.setSeeking(Format.TIME, true, start.toNanos(), end.toNanos());
        assertEquals("Format not set", Format.TIME, query.getFormat());
        assertEquals("Start time not set", start.toNanos(), query.getStart());
        assertEquals("End time not set", end.toNanos(), query.getEnd());
    }
    @Test public void formatsQuery() {
        Query query = GstQueryAPI.GSTQUERY_API.gst_query_new_formats();
        assertNotNull("gst_query_new_latency() returned null", query);
        assertTrue("Returned query not instance of LatencyQuery", query instanceof FormatsQuery);
    }
    @Test public void formatsQueryCount() {
        FormatsQuery query = new FormatsQuery();
        query.setFormats(Format.TIME, Format.PERCENT);
        assertEquals("Wrong formats count", 2, query.getCount());
    }
    @Test public void formatsQueryFormats() {
        FormatsQuery query = new FormatsQuery();
        query.setFormats(Format.TIME, Format.PERCENT);
        assertEquals("First format incorrect", Format.TIME, query.getFormat(0));
        assertEquals("Second format incorrect", Format.PERCENT, query.getFormat(1));
        List<Format> formats = query.getFormats();
        assertEquals("First format incorrect", Format.TIME, formats.get(0));
        assertEquals("Second format incorrect", Format.PERCENT, formats.get(1));
    }
    @Test public void queryTypeNick() {
        QueryType qt = QueryType.POSITION;
        assertEquals("nick mismatch", qt, QueryType.fromNick(qt.getName()));
    }
    @Test public void customQueryType() {
        QueryType qt = GstQueryAPI.GSTQUERY_API.gst_query_type_register("test", "A test query type");
        assertEquals("nick mismatch", qt, QueryType.fromNick("test"));
    }
    @Test public void makeWriteable() {
        Query query = new SegmentQuery(Format.TIME);
        assertTrue("New query is not writable", query.isWritable());
        // Bumping the ref count makes this instance non writable
        GstNative.load(GstMiniObjectAPI.class).gst_mini_object_ref(query);
        assertFalse("Query with multiple references should not be writable", query.isWritable());
        // Now get a new reference that is writable
        query = query.makeWritable();
        assertTrue("Query not writable after makeWritable", query.isWritable());
    }
}
TOP

Related Classes of org.gstreamer.QueryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.