Remove Rust files from media gtests

This commit is contained in:
trav90 2018-12-08 15:43:58 -06:00 committed by Roy Tam
commit ef2f6d6f28
4 changed files with 0 additions and 164 deletions

View file

@ -1,7 +0,0 @@
[package]
name = "mp4parse-gtest"
version = "0.1.0"
authors = ["nobody@mozilla.org"]
[lib]
path = "hello.rs"

View file

@ -1,9 +0,0 @@
#include <stdint.h>
#include "gtest/gtest.h"
extern "C" uint8_t* test_rust();
TEST(rust, CallFromCpp) {
auto greeting = test_rust();
EXPECT_STREQ(reinterpret_cast<char*>(greeting), "hello from rust.");
}

View file

@ -1,6 +0,0 @@
#[no_mangle]
pub extern fn test_rust() -> *const u8 {
// NB: rust &str aren't null terminated.
let greeting = "hello from rust.\0";
greeting.as_ptr()
}

View file

@ -1,142 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "gtest/gtest.h"
#include "mp4parse.h"
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>
static intptr_t
error_reader(uint8_t* buffer, uintptr_t size, void* userdata)
{
return -1;
}
struct read_vector {
explicit read_vector(FILE* file, size_t length);
explicit read_vector(size_t length);
size_t location;
std::vector<uint8_t> buffer;
};
read_vector::read_vector(FILE* file, size_t length)
: location(0)
{
buffer.resize(length);
size_t read = fread(buffer.data(), sizeof(decltype(buffer)::value_type),
buffer.size(), file);
buffer.resize(read);
}
read_vector::read_vector(size_t length)
: location(0)
{
buffer.resize(length, 0);
}
static intptr_t
vector_reader(uint8_t* buffer, uintptr_t size, void* userdata)
{
if (!buffer || !userdata) {
return -1;
}
auto source = reinterpret_cast<read_vector*>(userdata);
if (source->location > source->buffer.size()) {
return -1;
}
uintptr_t available = source->buffer.size() - source->location;
uintptr_t length = std::min(available, size);
memcpy(buffer, source->buffer.data() + source->location, length);
source->location += length;
return length;
}
TEST(rust, MP4MetadataEmpty)
{
mp4parse_error rv;
mp4parse_io io;
// Shouldn't be able to read with no context.
rv = mp4parse_read(nullptr);
EXPECT_EQ(rv, MP4PARSE_ERROR_BADARG);
// Shouldn't be able to wrap an mp4parse_io with null members.
io = { nullptr, nullptr };
mp4parse_parser* context = mp4parse_new(&io);
EXPECT_EQ(context, nullptr);
io = { nullptr, &io };
context = mp4parse_new(&io);
EXPECT_EQ(context, nullptr);
// FIXME: this should probably be accepted.
io = { error_reader, nullptr };
context = mp4parse_new(&io);
EXPECT_EQ(context, nullptr);
// Read method errors should propagate.
io = { error_reader, &io };
context = mp4parse_new(&io);
ASSERT_NE(context, nullptr);
rv = mp4parse_read(context);
EXPECT_EQ(rv, MP4PARSE_ERROR_IO);
mp4parse_free(context);
// Short buffers should fail.
read_vector buf(0);
io = { vector_reader, &buf };
context = mp4parse_new(&io);
ASSERT_NE(context, nullptr);
rv = mp4parse_read(context);
EXPECT_EQ(rv, MP4PARSE_ERROR_INVALID);
mp4parse_free(context);
buf.buffer.reserve(4097);
context = mp4parse_new(&io);
ASSERT_NE(context, nullptr);
rv = mp4parse_read(context);
EXPECT_EQ(rv, MP4PARSE_ERROR_INVALID);
mp4parse_free(context);
// Empty buffers should fail.
buf.buffer.resize(4097, 0);
context = mp4parse_new(&io);
rv = mp4parse_read(context);
EXPECT_EQ(rv, MP4PARSE_ERROR_UNSUPPORTED);
mp4parse_free(context);
}
TEST(rust, MP4Metadata)
{
FILE* f = fopen("street.mp4", "rb");
ASSERT_TRUE(f != nullptr);
// Read just the moov header to work around the parser
// treating mid-box eof as an error.
//read_vector reader = read_vector(f, 1061);
struct stat s;
ASSERT_EQ(0, fstat(fileno(f), &s));
read_vector reader = read_vector(f, s.st_size);
fclose(f);
mp4parse_io io = { vector_reader, &reader };
mp4parse_parser* context = mp4parse_new(&io);
ASSERT_NE(nullptr, context);
mp4parse_error rv = mp4parse_read(context);
EXPECT_EQ(MP4PARSE_OK, rv);
uint32_t tracks = 0;
rv = mp4parse_get_track_count(context, &tracks);
EXPECT_EQ(MP4PARSE_OK, rv);
EXPECT_EQ(2U, tracks);
mp4parse_free(context);
}