Added support for Windows

This commit is contained in:
Andrew Kane
2021-10-17 13:54:22 -07:00
parent 3e3aed7736
commit 3723cc1cb5
4 changed files with 20 additions and 7 deletions

View File

@@ -2,7 +2,11 @@ name: build
on: [push, pull_request] on: [push, pull_request]
jobs: jobs:
build: build:
runs-on: ubuntu-latest strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:

View File

@@ -1,5 +1,9 @@
## 0.2.0 (unreleased) ## 0.2.0 (unreleased)
- Added support for Windows
Breaking changes
- Changed pattern for fitting models - use `Model::params()` instead of `Model::new()` - Changed pattern for fitting models - use `Model::params()` instead of `Model::new()`
- Changed `fit`, `fit_eval`, `cv`, `save`, and `load` to return `Result` - Changed `fit`, `fit_eval`, `cv`, `save`, and `load` to return `Result`
- Changed `cv` to return average error - Changed `cv` to return average error

View File

@@ -3,8 +3,8 @@ extern crate cc;
fn main() { fn main() {
cc::Build::new() cc::Build::new()
.cpp(true) .cpp(true)
.flag("-std=c++11") .flag_if_supported("-std=c++11")
.flag("-Wno-unused-parameter") .flag_if_supported("-Wno-unused-parameter")
.file("vendor/libmf/mf.cpp") .file("vendor/libmf/mf.cpp")
.compile("mf"); .compile("mf");
} }

View File

@@ -104,6 +104,7 @@ impl Drop for Model {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{Error, Loss, Matrix, Model}; use crate::{Error, Loss, Matrix, Model};
use std::env;
fn generate_data() -> Matrix { fn generate_data() -> Matrix {
let mut data = Matrix::new(); let mut data = Matrix::new();
@@ -156,8 +157,12 @@ mod tests {
let data = generate_data(); let data = generate_data();
let model = Model::params().quiet(true).fit(&data).unwrap(); let model = Model::params().quiet(true).fit(&data).unwrap();
model.save("/tmp/model.txt").unwrap(); let mut path = env::temp_dir();
let model = Model::load("/tmp/model.txt").unwrap(); path.push("model.txt");
let path = path.to_str().unwrap();
model.save(path).unwrap();
let model = Model::load(path).unwrap();
model.p_factors(); model.p_factors();
model.q_factors(); model.q_factors();
@@ -168,13 +173,13 @@ mod tests {
fn test_save_missing() { fn test_save_missing() {
let data = generate_data(); let data = generate_data();
let model = Model::params().quiet(true).fit(&data).unwrap(); let model = Model::params().quiet(true).fit(&data).unwrap();
let result = model.save("/tmp/missing/model.txt"); let result = model.save("missing/model.txt");
assert_eq!(result.unwrap_err(), Error::Io); assert_eq!(result.unwrap_err(), Error::Io);
} }
#[test] #[test]
fn test_load_missing() { fn test_load_missing() {
let result = Model::load("/tmp/missing.txt"); let result = Model::load("missing.txt");
assert_eq!(result.unwrap_err(), Error::Io); assert_eq!(result.unwrap_err(), Error::Io);
} }