crosvm/libvda/tests/decode_tests.rs
Dennis Kempin fa32ced1e0 Crosvm Externalization: Move libvda rust code into crosvm
Long-term libvda will be replaced with an implementation that can
function outside of ChromeOS.

In the meantime thes allows crosvm to be built externally and pass
clippy with all features enabled.

BUG=b:191507399
TEST=Tests in crosvm and cros_sdk both pass:
  $ ./test_all
  $ cros_run_unit_tests --package=crosvm

Cq-Depend: chromium:2989315, chromium:2986403
Change-Id: Ic37bda4426d69d16cb4bc0d7ba6f81052f6f2f59
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2983505
Tested-by: Dennis Kempin <denniskempin@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
2021-07-08 05:32:04 +00:00

59 lines
1.7 KiB
Rust

// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//! Integration tests using LibVDA fake decode implemenation.
use libvda::decode::*;
use libvda::*;
fn create_vda_instance() -> VdaInstance {
VdaInstance::new(VdaImplType::Fake).expect("failed to create VDAInstance")
}
#[test]
fn test_create_instance() {
let instance = create_vda_instance();
let caps = instance.get_capabilities();
assert_ne!(caps.input_formats.len(), 0);
assert_ne!(caps.output_formats.len(), 0);
}
#[test]
fn test_initialize_decode_session() {
let instance = create_vda_instance();
let _session = instance
.open_session(Profile::VP8)
.expect("failed to open a session for VP8");
}
#[test]
fn test_decode_and_get_picture_ready_fake() {
let instance = create_vda_instance();
let mut session = instance
.open_session(Profile::VP8)
.expect("failed to open a session");
// Call decode() with dummy arguments.
let fake_bitstream_id = 12345;
session
.decode(
fake_bitstream_id,
1, // fd
0, // offset
0, // bytes_used
)
.expect("failed to send a decode request");
// Since we are using the fake backend,
// we must get a event immediately after calling decode().
match session.read_event() {
Ok(Event::PictureReady { bitstream_id, .. }) => {
assert_eq!(bitstream_id, fake_bitstream_id);
}
Ok(event) => panic!("Obtained event is not PictureReady but {:?}", event),
Err(msg) => panic!(msg),
}
}