Skip to content

Commit

Permalink
test?
Browse files Browse the repository at this point in the history
  • Loading branch information
jkanche committed Oct 18, 2024
1 parent 7e4eae7 commit cb86ad9
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 9 deletions.
8 changes: 7 additions & 1 deletion lib/src/rdswrapper.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// rds_bindings.cpp
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include <pybind11/numpy.h>
#include "rds2cpp/rds2cpp.hpp"
#include <memory>

namespace py = pybind11;

Expand Down Expand Up @@ -85,6 +87,9 @@ class RdsObject {
}

std::vector<std::string> get_attribute_names() const {
if (!ptr) {
throw std::runtime_error("Null pointer in get_attribute_names");
}
switch (ptr->type()) {
case rds2cpp::SEXPType::INT:
return static_cast<const rds2cpp::IntegerVector*>(ptr.get())->attributes.names;
Expand Down Expand Up @@ -191,7 +196,7 @@ class RdsParser {
public:
RdsParser(const std::string& filename) {
try {
parsed = std::make_unique<rds2cpp::Parsed>(rds2cpp::parse_rds(filename));
parsed = std::make_unique<rds2cpp::Parsed>(rds2cpp::parse_rds(filename));
} catch (const std::exception& e) {
throw std::runtime_error("Failed to parse RDS file: " + std::string(e.what()));
}
Expand All @@ -211,6 +216,7 @@ PYBIND11_MODULE(rds_parser, m) {
py::register_exception<std::runtime_error>(m, "RdsParserError");

py::class_<RdsObject>(m, "RdsObject")
// .def(py::init<const RdsObject&>())
.def("get_type", &RdsObject::get_type)
.def("get_size", &RdsObject::get_size)
.def("get_numeric_data", &RdsObject::get_numeric_data)
Expand Down
2 changes: 1 addition & 1 deletion src/rds2py/PyRdsReader.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ def _handle_special_cases(self, result: Dict) -> Dict:
result["data"] = range(-data[1])
return result

def get_dimensions(self) -> Tuple[int, int]:
def get_dimensions(self) -> Tuple[int, int]:
"""Get dimensions of the RDS object"""
try:
return self.obj.get_dimensions()
Expand Down
4 changes: 3 additions & 1 deletion tests/test_atomic-attr.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@

def test_read_atomic_attrs():
parsed_obj = PyRdsReader("tests/data/atomic_attr.rds")
print(parsed_obj)
data = parsed_obj.read()
print(data)

assert data is not None
assert len(data["data"]) > 0
assert len(data["attributes"]) >0
assert len(data["attributes"]["names"]["data"]) >0
assert len(data["attributes"]["names"]["data"]) != 0
12 changes: 6 additions & 6 deletions tests/test_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,40 +8,40 @@


def test_read_atomic_lists():
parsed_obj = PyRdsObject("tests/data/lists.rds")
parsed_obj = PyRdsReader("tests/data/lists.rds")
array = parsed_obj.read()

assert array is not None
assert len(array) > 0


def test_read_atomic_lists_nested():
parsed_obj = PyRdsObject("tests/data/lists_nested.rds")
parsed_obj = PyRdsReader("tests/data/lists_nested.rds")
array = parsed_obj.read()

assert array is not None
assert len(array) > 0


def test_read_atomic_lists_nested_deep():
parsed_obj = PyRdsObject("tests/data/lists_nested_deep.rds")
parsed_obj = PyRdsReader("tests/data/lists_nested_deep.rds")
array = parsed_obj.read()

assert array is not None
assert len(array) > 0


def test_read_atomic_lists_df():
parsed_obj = PyRdsObject("tests/data/lists_df.rds")
parsed_obj = PyRdsReader("tests/data/lists_df.rds")
array = parsed_obj.read()

assert array is not None
assert len(array) > 0


def test_read_atomic_lists_nested_deep_rownames():
parsed_obj = PyRdsObject("tests/data/lists_df_rownames.rds")
parsed_obj = PyRdsReader("tests/data/lists_df_rownames.rds")
array = parsed_obj.read()

assert array is not None
assert len(array) > 0

0 comments on commit cb86ad9

Please sign in to comment.