From 9815077924db9bf00dd66dd67ad4156694c04ce8 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 22 Mar 2025 15:58:10 -0400 Subject: [PATCH 1/8] Added tests --- .gitignore | 1 + Cargo.toml | 1 + src/song.rs | 2 - tests/97h357j59j.flac | Bin 0 -> 13795 bytes tests/song_tests.rs | 166 ++++++++++++++++++++++++++++++++++++++++++ tests/track01.flac | Bin 0 -> 13795 bytes tests/track02.flac | Bin 0 -> 14322 bytes tests/track03.flac | Bin 0 -> 12350 bytes 8 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 tests/97h357j59j.flac create mode 100644 tests/song_tests.rs create mode 100644 tests/track01.flac create mode 100644 tests/track02.flac create mode 100644 tests/track03.flac diff --git a/.gitignore b/.gitignore index ea8c4bf..96ef6c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /target +Cargo.lock diff --git a/Cargo.toml b/Cargo.toml index 90b37f5..2e6113e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,3 +9,4 @@ license = "MIT" serde = { version = "1.0.218", features = ["derive"] } serde_json = { version = "1.0.139" } rand = { version = "0.9" } +tempfile = { version = "3.19.1" } diff --git a/src/song.rs b/src/song.rs index ed62435..13c8aa0 100644 --- a/src/song.rs +++ b/src/song.rs @@ -64,7 +64,6 @@ fn is_dur_not_set(num: &i32) -> bool { *num == 0 } -/* impl Default for Song { fn default() -> Self { Song { @@ -93,7 +92,6 @@ impl Default for Song { } } } -*/ impl Song { pub fn to_metadata_json(&self, pretty: bool) -> Result { diff --git a/tests/97h357j59j.flac b/tests/97h357j59j.flac new file mode 100644 index 0000000000000000000000000000000000000000..b018649c66699a09eb7e75037f1757e0ce559b8a GIT binary patch literal 13795 zcmeI2X;4=88O2{klbX2iC{1Wwh*)I_dMsE z{}*GzqsBTMj@LRnI(z=p(c$Rw@=33yj_xzBjypLZ_K@54Jol|LL%ow81+;Rs=+xHp zXTqbBVuAw)4I32bbiUx>uAYC~OXkK!yQ62%S?&stn-@FRH!?o1gJ&KcmFRW_IfI4< zIEMrT1z97{ABhv7`zxn<9Bja8FDL|^j*KRoAl+T^A*lV-$kxYwQ?Nnaa%Hq~V$~~PHzmTJxxya%d3zUDH zX7Nwzm76}cxJ{$-r3i~(I;uRai^VV3DG&6sxNU{Nd zyeAfSe4?D2VsWSMlirt&wT7WX!k3zIDNxuQI#+2Wsmp&ax_i(k2>ysyCG zSO2X1WvRu!bCl2Fc|UV2AHn-xTcqrV^YmG$JPGIRyGl6|&+E5b`A593|5D|JIFH|l z$~|%3*JmhCgPsH4QyvJt{U<3mVIKqERlbCM{rpYkuFx}JjPg9_J!qWr6YOJfgmNnO z<+T3x5PtFSQ(!mc7Vuk;k8&>jIHb4oUHJ7E?UhHuPea=%Pk`To6&=^$$6+t(pc;M+ z@mKx^dHQ95av}0IysvUQB9+fV?{O=YQ*fT~ z$;#j2yuVIRj=}f5ov7Rm-y0sKd=Yv~h*3TRy(Y#f`$Nx&`O4FwcjQpz{qW;&f|Rer zukXB}91cIfJ3@IB{61-b^4G}2$MPA;2Rk;Xxnr;2PHT)hRZ@(>9ZpQPX_9|!KeRHan zy>Xto2b34!ywRtW>+n2xlk!=-FXn{uWSnPSt#W^ycm59L80Z;WtlSNHFW9D>f_*H^ zRsI(HT9m5n4?P#JQ=SgJmt-qn#6IFSD4)T;mR?p4ho6@HNqH3f7Jox|Km3?*Q~5gl zns`Ck0Y824sd57Rmh^k&ui?iJ&noA^uOIzQ`7-jf{DE=>@|Ju{c?k0O@onYN$m@#7 z%0Z|@Jm!p@lWLL;T%h|FW z9dUFW)H=!baY{{UoMMynbsX$Y*%} z8i=})!XVe9u#Hqk{Q?@@NMjkyLS-9kSQmrQ>Bd?X%2SlKkeWUx@;aCsS-tQ;TQZblYMX(O&L zBb&ALJ?=Lnhe2+G0ynlW>d9z$V=K$xAu8P1#=6*!jyG~yC}AjZBaf96jFva@SxTj- zaif5>^*MUpC}faxaFH2BjQTCybVf1DAPHBQQNp@tjl0g+&O*6~%gorp%BjI^XY6Dt z4aaq6>|$+=$9-q)W{_veL-#Q1gXOh*SqAlTuu|5=1vz>d3#Fqxw49YQS6*AeQhF)} z+sE2Um!nrQ$e)PFRgC&^S;KyoK_6LEHR~c$R(XJhvQb1n$jbR%)^LcW6eo+SVQu-y zDr*_!hhnJj>mpgKeUyb#DyBQe%K2Pud7PybCdNI%+6oqHpJb4e zB!s6J_0|&8dX_Sij< zKM|^%X|(nYY|dOm^H*YX=2}K<8B{mZ8N!xO-CW0r6<~AbdWP^eHfL_2waef_b0f`v z6)rS4(b}PKvbmY&4}_D=3`Xo8Txe!8ge7pHnZ<~;hm*~0hHxdEZ04}~vY@)Th2{7I zR5!P>`sQPE<~EjNZ*0!YWd)yy>Si8G`mm^;&kF8~&6x!(>8aS9S;*?^0T-G@EXQcL z&@5*4J%*Fb5|(2coNR7q1$-zo#{)uw*GDfUG9$L;2-j>%^Fk;K(VEY)tmU8q;T02xkuA=z^Wexjj?J`+Z zHO+rjR(XICYcC=nWC&Nv8V)gH_heBu3}K0^vX<31UrcwH<=9(nd4$!MCC05|IsPEl zKFSL2E2cZflAbEIJkAO}FUCE=l0GcfKFR8PEFnC_a!iw$*0cJ0NRUsn9HS-b4Xofs TPY9EJ%*IYvS~&joyT0|G#2-_X literal 0 HcmV?d00001 diff --git a/tests/song_tests.rs b/tests/song_tests.rs new file mode 100644 index 0000000..4e7161f --- /dev/null +++ b/tests/song_tests.rs @@ -0,0 +1,166 @@ +// use std::fs::{self, File}; +use std::fs; +use std::fs::File; +use std::io::{Read, Write}; +use std::path::Path; + +use tempfile::tempdir; + +use icarus_models::song; +use icarus_models::types; + +fn get_tests_directory() -> String { + String::from(env!("CARGO_MANIFEST_DIR").to_owned() + "/tests/") +} + +fn does_directory_exists(directory: &String) -> bool { + let path = Path::new(directory); + if let Ok(dir_i) = fs::metadata(path) { + dir_i.is_dir() + } else { + false + } +} + +fn extract_data_from_file(filepath: &String) -> Result, std::io::Error> { + match std::fs::File::open(filepath) { + Ok(mut file) => { + let mut buffer: Vec = Vec::new(); + let _ = file.read_to_end(&mut buffer); + Ok(buffer) + } + Err(err) => { + println!("Error: {}", err); + // assert!(false, "Failed to open file: {:?}", err); + // Err(4) + Err(err) + } + } +} + +#[test] +fn test_song_to_data() { + println!("Test"); + let some_val = true; + + println!("Checking if some_val is true"); + assert_eq!(true, some_val); + + println!("Getting track"); + let mut song = song::Song::default(); + song.filename = String::from("track01.flac"); + song.id = 1; + // println!("O ", song.id); + + // let temp_dir = tempdir().expect("Failed to create temp dir"); + + println!("Getting directory"); + /* + song.directory = match temp_dir.path().to_str() { + Some(s) => String::from(s), + None => { String::new() }, + }; + */ + song.directory = get_tests_directory(); + + // assert_eq!(song.directory.is_empty(), false); + assert!( + does_directory_exists(&song.directory), + "Directory does not exist" + ); + + println!("Directory: {}", song.directory); + + match song.song_path() { + Ok(filepath) => { + // let file_result = std::fs::File::open(filepath); + // match file_result { + match extract_data_from_file(&filepath) { + Ok(buffer) => { + // let mut buffer: Vec = Vec::new(); + // let _ = file.read_to_end(&mut buffer); + assert_eq!(buffer.is_empty(), false); + + match song.to_data() { + Ok(song_data) => { + println!("Both files match"); + assert_eq!(buffer, song_data); + } + Err(err) => { + assert!(false, "Error producing song data: {:?}", err); + } + }; + } + Err(err) => { + println!("Error: {}", err); + assert!(false, "Failed to open file: {:?}", err); + } + } + } + Err(err) => { + println!("Error: {}", err); + assert!(false, "Could not get song path: {:?}", err); + } + } +} + +#[test] +fn test_song_path_check() { + let mut song = song::Song::default(); + song.directory = get_tests_directory(); + song.filename = String::from("track01.flac"); + + assert!( + does_directory_exists(&song.directory), + "Directory does not exist" + ); +} + +#[test] +fn test_song_generate_filename() { + let mut song = song::Song::default(); + song.directory = get_tests_directory(); + song.filename = String::from("track01.flac"); + + match song.song_path() { + Ok(songpath) => match extract_data_from_file(&songpath) { + Ok(buffer) => { + let mut song_cpy = song.clone(); + let temp_dir = tempdir().expect("Failed to create temp dir"); + song_cpy.directory = match temp_dir.path().to_str() { + Some(s) => String::from(s), + None => String::new(), + }; + + assert_eq!(song.directory.is_empty(), false); + // song_cpy.directory = String::from(temp_dir.path().to_str()); + song_cpy.filename = song.generate_filename(types::MusicTypes::FlacExtension, true); + println!("Directory: {:?}", song_cpy.directory); + println!("File to be created: {:?}", song_cpy.filename); + + let path = match song_cpy.song_path() { + Ok(s_path) => s_path, + Err(err) => { + assert!(false, "Error: {:?}", err); + String::new() + } + }; + + match File::create(path) { + Ok(mut file_cpy) => { + let _ = file_cpy.write_all(&buffer); + } + Err(err) => { + assert!(false, "Error: {:?}", err); + } + }; + } + Err(err) => { + assert!(false, "Error: {:?}", err); + } + }, + Err(err) => { + assert!(false, "Error extracting song data: {:?}", err); + } + } +} diff --git a/tests/track01.flac b/tests/track01.flac new file mode 100644 index 0000000000000000000000000000000000000000..b018649c66699a09eb7e75037f1757e0ce559b8a GIT binary patch literal 13795 zcmeI2X;4=88O2{klbX2iC{1Wwh*)I_dMsE z{}*GzqsBTMj@LRnI(z=p(c$Rw@=33yj_xzBjypLZ_K@54Jol|LL%ow81+;Rs=+xHp zXTqbBVuAw)4I32bbiUx>uAYC~OXkK!yQ62%S?&stn-@FRH!?o1gJ&KcmFRW_IfI4< zIEMrT1z97{ABhv7`zxn<9Bja8FDL|^j*KRoAl+T^A*lV-$kxYwQ?Nnaa%Hq~V$~~PHzmTJxxya%d3zUDH zX7Nwzm76}cxJ{$-r3i~(I;uRai^VV3DG&6sxNU{Nd zyeAfSe4?D2VsWSMlirt&wT7WX!k3zIDNxuQI#+2Wsmp&ax_i(k2>ysyCG zSO2X1WvRu!bCl2Fc|UV2AHn-xTcqrV^YmG$JPGIRyGl6|&+E5b`A593|5D|JIFH|l z$~|%3*JmhCgPsH4QyvJt{U<3mVIKqERlbCM{rpYkuFx}JjPg9_J!qWr6YOJfgmNnO z<+T3x5PtFSQ(!mc7Vuk;k8&>jIHb4oUHJ7E?UhHuPea=%Pk`To6&=^$$6+t(pc;M+ z@mKx^dHQ95av}0IysvUQB9+fV?{O=YQ*fT~ z$;#j2yuVIRj=}f5ov7Rm-y0sKd=Yv~h*3TRy(Y#f`$Nx&`O4FwcjQpz{qW;&f|Rer zukXB}91cIfJ3@IB{61-b^4G}2$MPA;2Rk;Xxnr;2PHT)hRZ@(>9ZpQPX_9|!KeRHan zy>Xto2b34!ywRtW>+n2xlk!=-FXn{uWSnPSt#W^ycm59L80Z;WtlSNHFW9D>f_*H^ zRsI(HT9m5n4?P#JQ=SgJmt-qn#6IFSD4)T;mR?p4ho6@HNqH3f7Jox|Km3?*Q~5gl zns`Ck0Y824sd57Rmh^k&ui?iJ&noA^uOIzQ`7-jf{DE=>@|Ju{c?k0O@onYN$m@#7 z%0Z|@Jm!p@lWLL;T%h|FW z9dUFW)H=!baY{{UoMMynbsX$Y*%} z8i=})!XVe9u#Hqk{Q?@@NMjkyLS-9kSQmrQ>Bd?X%2SlKkeWUx@;aCsS-tQ;TQZblYMX(O&L zBb&ALJ?=Lnhe2+G0ynlW>d9z$V=K$xAu8P1#=6*!jyG~yC}AjZBaf96jFva@SxTj- zaif5>^*MUpC}faxaFH2BjQTCybVf1DAPHBQQNp@tjl0g+&O*6~%gorp%BjI^XY6Dt z4aaq6>|$+=$9-q)W{_veL-#Q1gXOh*SqAlTuu|5=1vz>d3#Fqxw49YQS6*AeQhF)} z+sE2Um!nrQ$e)PFRgC&^S;KyoK_6LEHR~c$R(XJhvQb1n$jbR%)^LcW6eo+SVQu-y zDr*_!hhnJj>mpgKeUyb#DyBQe%K2Pud7PybCdNI%+6oqHpJb4e zB!s6J_0|&8dX_Sij< zKM|^%X|(nYY|dOm^H*YX=2}K<8B{mZ8N!xO-CW0r6<~AbdWP^eHfL_2waef_b0f`v z6)rS4(b}PKvbmY&4}_D=3`Xo8Txe!8ge7pHnZ<~;hm*~0hHxdEZ04}~vY@)Th2{7I zR5!P>`sQPE<~EjNZ*0!YWd)yy>Si8G`mm^;&kF8~&6x!(>8aS9S;*?^0T-G@EXQcL z&@5*4J%*Fb5|(2coNR7q1$-zo#{)uw*GDfUG9$L;2-j>%^Fk;K(VEY)tmU8q;T02xkuA=z^Wexjj?J`+Z zHO+rjR(XICYcC=nWC&Nv8V)gH_heBu3}K0^vX<31UrcwH<=9(nd4$!MCC05|IsPEl zKFSL2E2cZflAbEIJkAO}FUCE=l0GcfKFR8PEFnC_a!iw$*0cJ0NRUsn9HS-b4Xofs TPY9EJ%*IYvS~&joyT0|G#2-_X literal 0 HcmV?d00001 diff --git a/tests/track02.flac b/tests/track02.flac new file mode 100644 index 0000000000000000000000000000000000000000..3dfdbdb171d81ae387d33754fc1e1eec2236f690 GIT binary patch literal 14322 zcmeI2X;4?^8O8sKnwTi=yGgA3QuGg2q$+VMsW!O8xG$k7poog1(TE$1$ReA{zPPa{ zqJpBRD7f5fTU#|rClaG}+Hr~7G)6O8Co!Si^Yl6G*Ut1yXD&0E`8_)KzV|%moHri~ z^7S9J7dV4rMhPXKg zyLot6qx!!XylkQ0qTrRQLc`X2cdQ?+3SJuM7Zw;47*_wBKyUY<9$rrCC$|32K3*Ce z;O+bb{6F|@te2;kmzU=lXZ_*-o1cGwWSIAV3J~e&R)0wQ$5y~rz*fLkz*fLkz*fLk zz*fLkz*fLkz*fLkz*fLkz*fLkz*fLkz*fLkz*fLkz*fLkz*fLkz*fLk;Qw8Lx|g%N zI->L|`h0G2gBazh_bhIhsC@pE#V%Wwk0x2%Xs2>WBa0hnD|d8S+$2>wX^F+JWh(zP z)8f~wlxx;m+_YNx$|Q^5IHo+ajm2+PC=cjkakFCOXNN6rzDGGS$70w0%58sVaf>qL zh0iQ*`Aj)2!s1rXmG2+3xb-XLum={m`9ZnCEsNWJqkMgu#qAy{m-<`W{%^|fdRyG# zzVd{o7I*xka`XNcce&RT78*IMP#br!$%xw6NfEPngC^1e)q z-}$TZ7X=n~o3DHx&-+=R@=?66`x50oI8Tod<*7Jt&yC7ScwVoy%0JcS zD0jqp`_5LL2|fGGQyu`l`%hJ_!9E6jsC)(c`uTgxZK0>zXyt{_d*C?bXV}M}Ny?Gf zm(%*!L-+}UpWNFiH-O(fx+k2V?vPfS?Dz}RJlL&oU}-J7WAGxMEL;x_<@J= zSMckU;mW@7^M@mpN5bz@`ze2oJWLy?oQ}Lq@1yKMo@R7YUWvTTY_2>Qew_7&@+kOq zwu|yL_<2qvi*eq7Q_2;1USN&#IlM3Egz_|;XJNT=Z=82gzH$)s49-z*2fY{XP>#Sp zLeiAK!@ib8D))z;OSdS`g5JwglrLi+p>fJ*v9IOVlzri+6@OM93BQHiR6YPduDqrE z75uvDlClGS`uM8yO89N{@0GuXAJ?2yPKRGV`MdHpFku38065}oeMF@rMH7qG00=M$~$3@ z&vY4X80=)crmw(Y7xUH22ZP-#IHx>x4;yZ*yml`uu2v3K&`teOBu6h~$*z}&7O`bp z$ZLyPvpI6GeeBtXa`gQyx)Kq&giUut)^LDTH%S&%%B~wBt31fEy(c0cV%uiO8V<8= zU1U*Z?AztC%5q+K(PFwIyz#yjTOQ?=7bwQ9;GNfAtbL4^?x$k90v!|S(Pf_#?u zuYsr=5e#w_3fqWe)GwjYjVPAETvWCZ&AJ$bPB%8QP+p+4jTlx=3|igT!cuC9+BRZY zTMN+ZMjV6O0~ePO&!|tv&1NL93@+m8GPbfVDsi_Ni7b>*TwX>JE2k@NHzS#)6p!o6 zNMUV#kNeF?WssYqz>RH;dN>;1*v>L|f(kcwurBh@@kSa8#RnyBq_c87(eg$HOQ`@g zZe+5yK10tNSqyS2E;1vVQNM$m&d6aItj1MlY#!i;f zFkENGF4op~+;_%q26?VLbPuCGNM5^_Wl$vtD_~t*lA{;0P+H1Ei&!}ed(SSZ6Jgw?E^@e$ka8KQ1R(AwTm-HfF9 zCqi{Iiq^h~&6&|O|9))F+{}orfa+!pL)Z|in_C#MOl;1KWeD$Lb7mZ^T?iMN@ihOJ zaG{w%Ymb4G&8;-QJDhALGGY(lLNkdW%!LchWJb&tPBv2*!VPe;nab)*hU(@vmgA35 z-Q3RVTZGM-J6MigusJi06?_4zo9Qg+Bcgf+E4U{%XJ)dbXJB(?7OSrVTxe#q90TA& zGl$jp6izmCS&mU~vYE#Uo&y(}`7G(aaG|-A6piE{KpMl4evTEr0EmDd(CVk_ie`xwH8a`gSQ_81YlgywgbH5{O|3uRHI zH2;^f%7cuUtB8DvA>1HqILwGWkVTa-gt@ZHa#r6WG2IcCV;8aIQC45F7`KAu_@h|+ z7%RA^nC>`BdWP7tk`;VGjC+D5eMGE%lGXQALU@Yh7$q^SV)b>9AfIMA21wM;u!5^4 zgw-tRs}j>1R`47N@>!O2Uqt<41cUs+6zhLjFGe!z-GeZQVi}wmhCwvz!gR%8GYjRd zSPWuVIm;?A*uql!;Ryz@tgX147{oEie|U*OJfnX4G6o4OgMq0SY-L@{E5sm?g|gWV zgCthYKRRKM%u<@~gFy;wtJMk&QW@miE*NZM)VB@AU^~m8Q3wV*SQl&jFi2ye9InM6 zot5*K+Zbf9l*ZLykjdH_o`69XgS@T;gKS3q^?VF+SO)p$G00_IeDl2SWq8+%c`dT1 LI{x)@aLGRbOeyUf)}$<)*-4M)c*M>_l6vsV3Wra#SmX9k#O!F=D^?_Te_{*VwF z8=}+c`uEWFF#WLA>3ViOYM!dIo!Yn4h3^m792pqpu;6Ki&BOeM7CN);R;IrRjm=E( z@$&Tb^wR5JHL;!P%Q!DCCEgexGjnl3Xi8#IoJ)9GN;gwIJ~qP`V9*QX^YaPTo0|VOpT7^87Vu92@^mhyCbf^IfTn<^fTn<^fTn<^fTn<^fTn<^fTn<^ zfTn<^fTn<^fTn<^fTn<^fTn<^fTn<^fTn<^fTn<^fTqCzU4f40(aySjI)&>c$!3Mb zlkZ4=rHJ^{G0Em@i4PV_w%9_PY$3T*HL;^!@~fr9#d9Qgt|WdLDfzV);?^aSEl&`i z50l*G5OHKr$z7X?hqy|%swZyWFWGuKabAsNo882AUrFwEfH<*TvTZwYS+3;nPl@jx zlHB73aoR7Ed;Upmc1yC|Z^YLkB-`I7-Ww~~;YZ?;0g_+8M?Aq&vg27|Yj?>`=ZSOr zO78Uq@xx%ry#;Yqrex=<#6caB`&=S6d?UH6H+Vd82hI}`N?e5Vz8ggx z0X;^~ARY|8#!Mw{hMw<*6SqO{u}g__(a*Rn;wR|${dD34oM(Inu|3Wk8cTc*dQ33iBFmPJ9LP{E-E5J?4E{cj9I6!*mB?EBIwbKjLcm zDMtR^8a@x;w~y(H6I;Qrr*ruLSAFF| zIGx8Qs53_)pO2uAL7||Ho)MCa!g3a|<|h;iS;hNTQCPt;X0JhECF|I&6@^uNkg!@5 zR`W^x8&O!pM`?VD!dgDdjZ-KTv6$v#Q7C3LQ?pT6$8z3rL7{~8tgu6&ln2_FfWms7 zXora?Y~YbDut8xX&-CNrD3r0O+?r7+XIDk9M4^Ihb@3(&mF%nIk5H)M!G3WLg=(Jc zlIJMY@M!nig~BGD?W9r^HnX{!oKUD`cL@&^wy?dX%tv7>`)kl>6t;1|>D5EGbHatF z*Y4nmyQ&)7=|b~Sr&`~|A)BopTE{8dO})0BW41;$*1$P?U$wrQgRW7D+{j6HLtVoj zj=C^)QF}S-{MA+NME-=+wnAOQevVsnbx{X6Z&TG(Hu1tMP($}AZ@kB9ED!R^ zGpfOD=AGxDM*9#i-HU4IKI5%>T#e;nUb}8;aF6ibjaH+5lowwwWx`{;`I3}PTX^-o zP)7cocVCIJ`f*;qQ~Y}(4}w@DfKB=27VtBYJVati`mZ06%Q;Y+C zVs(kN92bYN+e8ruN(z>jDCWp<#yIFwdneTfo|tv|5eL@68D5&YZ@L~gp z!6QVt*vN6Q85u9iI8a6-#6>wrjt^2^RB$NmM2w3{j;(Kz^P-B4T#7{|s@dwdvFSt& zhe0M*nb^c}(FwawZ010@g=HpcIdTqQ+leh4O2e_v#8!^2aoBfa8yk6=dgykx`cU=S z9UKNNsp7I3sm2;OwhB$HXE}@Ao%^sa*PZ Date: Sat, 22 Mar 2025 16:00:48 -0400 Subject: [PATCH 2/8] Renamed test file --- tests/{song_tests.rs => tests.rs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/{song_tests.rs => tests.rs} (100%) diff --git a/tests/song_tests.rs b/tests/tests.rs similarity index 100% rename from tests/song_tests.rs rename to tests/tests.rs -- 2.43.0 From 35785d78e3d6d30fde4a799cada02a0611e9edc0 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 22 Mar 2025 16:01:00 -0400 Subject: [PATCH 3/8] Saving changes --- tests/tests.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/tests.rs b/tests/tests.rs index 4e7161f..16aac1a 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -1,3 +1,4 @@ +mod song_tests { // use std::fs::{self, File}; use std::fs; use std::fs::File; @@ -164,3 +165,4 @@ fn test_song_generate_filename() { } } } +} -- 2.43.0 From c1039859eaa5a3989e75db83dc71b204934a3d31 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 22 Mar 2025 16:01:10 -0400 Subject: [PATCH 4/8] Added album file --- tests/album.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tests/album.json diff --git a/tests/album.json b/tests/album.json new file mode 100644 index 0000000..7124099 --- /dev/null +++ b/tests/album.json @@ -0,0 +1,31 @@ +{ + "album": "Sample Tracks! Yes", + "album_artist": "KD", + "genre": "Country", + "year": 2025, + "track_count": 3, + "disc_count": 1, + "tracks": [ + { + "title": "E less", + "artist": "KD", + "disc": 1, + "track": 1, + "duration": 31 + }, + { + "title": "Aaaaaye", + "artist": "KD", + "disc": 1, + "track": 2, + "duration": 33 + }, + { + "title": "Check D out", + "artist": "KD", + "disc": 1, + "track": 3, + "duration": 22 + } + ] +} -- 2.43.0 From 0b40ed903d23732e17c2991939649820d3f1e85f Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 22 Mar 2025 16:01:40 -0400 Subject: [PATCH 5/8] Code formatting --- tests/tests.rs | 277 +++++++++++++++++++++++++------------------------ 1 file changed, 139 insertions(+), 138 deletions(-) diff --git a/tests/tests.rs b/tests/tests.rs index 16aac1a..752d766 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -1,168 +1,169 @@ mod song_tests { -// use std::fs::{self, File}; -use std::fs; -use std::fs::File; -use std::io::{Read, Write}; -use std::path::Path; + // use std::fs::{self, File}; + use std::fs; + use std::fs::File; + use std::io::{Read, Write}; + use std::path::Path; -use tempfile::tempdir; + use tempfile::tempdir; -use icarus_models::song; -use icarus_models::types; + use icarus_models::song; + use icarus_models::types; -fn get_tests_directory() -> String { - String::from(env!("CARGO_MANIFEST_DIR").to_owned() + "/tests/") -} - -fn does_directory_exists(directory: &String) -> bool { - let path = Path::new(directory); - if let Ok(dir_i) = fs::metadata(path) { - dir_i.is_dir() - } else { - false + fn get_tests_directory() -> String { + String::from(env!("CARGO_MANIFEST_DIR").to_owned() + "/tests/") } -} -fn extract_data_from_file(filepath: &String) -> Result, std::io::Error> { - match std::fs::File::open(filepath) { - Ok(mut file) => { - let mut buffer: Vec = Vec::new(); - let _ = file.read_to_end(&mut buffer); - Ok(buffer) - } - Err(err) => { - println!("Error: {}", err); - // assert!(false, "Failed to open file: {:?}", err); - // Err(4) - Err(err) + fn does_directory_exists(directory: &String) -> bool { + let path = Path::new(directory); + if let Ok(dir_i) = fs::metadata(path) { + dir_i.is_dir() + } else { + false } } -} -#[test] -fn test_song_to_data() { - println!("Test"); - let some_val = true; + fn extract_data_from_file(filepath: &String) -> Result, std::io::Error> { + match std::fs::File::open(filepath) { + Ok(mut file) => { + let mut buffer: Vec = Vec::new(); + let _ = file.read_to_end(&mut buffer); + Ok(buffer) + } + Err(err) => { + println!("Error: {}", err); + // assert!(false, "Failed to open file: {:?}", err); + // Err(4) + Err(err) + } + } + } - println!("Checking if some_val is true"); - assert_eq!(true, some_val); + #[test] + fn test_song_to_data() { + println!("Test"); + let some_val = true; - println!("Getting track"); - let mut song = song::Song::default(); - song.filename = String::from("track01.flac"); - song.id = 1; - // println!("O ", song.id); + println!("Checking if some_val is true"); + assert_eq!(true, some_val); - // let temp_dir = tempdir().expect("Failed to create temp dir"); + println!("Getting track"); + let mut song = song::Song::default(); + song.filename = String::from("track01.flac"); + song.id = 1; + // println!("O ", song.id); - println!("Getting directory"); - /* - song.directory = match temp_dir.path().to_str() { - Some(s) => String::from(s), - None => { String::new() }, - }; - */ - song.directory = get_tests_directory(); + // let temp_dir = tempdir().expect("Failed to create temp dir"); - // assert_eq!(song.directory.is_empty(), false); - assert!( - does_directory_exists(&song.directory), - "Directory does not exist" - ); + println!("Getting directory"); + /* + song.directory = match temp_dir.path().to_str() { + Some(s) => String::from(s), + None => { String::new() }, + }; + */ + song.directory = get_tests_directory(); - println!("Directory: {}", song.directory); + // assert_eq!(song.directory.is_empty(), false); + assert!( + does_directory_exists(&song.directory), + "Directory does not exist" + ); - match song.song_path() { - Ok(filepath) => { - // let file_result = std::fs::File::open(filepath); - // match file_result { - match extract_data_from_file(&filepath) { + println!("Directory: {}", song.directory); + + match song.song_path() { + Ok(filepath) => { + // let file_result = std::fs::File::open(filepath); + // match file_result { + match extract_data_from_file(&filepath) { + Ok(buffer) => { + // let mut buffer: Vec = Vec::new(); + // let _ = file.read_to_end(&mut buffer); + assert_eq!(buffer.is_empty(), false); + + match song.to_data() { + Ok(song_data) => { + println!("Both files match"); + assert_eq!(buffer, song_data); + } + Err(err) => { + assert!(false, "Error producing song data: {:?}", err); + } + }; + } + Err(err) => { + println!("Error: {}", err); + assert!(false, "Failed to open file: {:?}", err); + } + } + } + Err(err) => { + println!("Error: {}", err); + assert!(false, "Could not get song path: {:?}", err); + } + } + } + + #[test] + fn test_song_path_check() { + let mut song = song::Song::default(); + song.directory = get_tests_directory(); + song.filename = String::from("track01.flac"); + + assert!( + does_directory_exists(&song.directory), + "Directory does not exist" + ); + } + + #[test] + fn test_song_generate_filename() { + let mut song = song::Song::default(); + song.directory = get_tests_directory(); + song.filename = String::from("track01.flac"); + + match song.song_path() { + Ok(songpath) => match extract_data_from_file(&songpath) { Ok(buffer) => { - // let mut buffer: Vec = Vec::new(); - // let _ = file.read_to_end(&mut buffer); - assert_eq!(buffer.is_empty(), false); + let mut song_cpy = song.clone(); + let temp_dir = tempdir().expect("Failed to create temp dir"); + song_cpy.directory = match temp_dir.path().to_str() { + Some(s) => String::from(s), + None => String::new(), + }; - match song.to_data() { - Ok(song_data) => { - println!("Both files match"); - assert_eq!(buffer, song_data); + assert_eq!(song.directory.is_empty(), false); + // song_cpy.directory = String::from(temp_dir.path().to_str()); + song_cpy.filename = + song.generate_filename(types::MusicTypes::FlacExtension, true); + println!("Directory: {:?}", song_cpy.directory); + println!("File to be created: {:?}", song_cpy.filename); + + let path = match song_cpy.song_path() { + Ok(s_path) => s_path, + Err(err) => { + assert!(false, "Error: {:?}", err); + String::new() + } + }; + + match File::create(path) { + Ok(mut file_cpy) => { + let _ = file_cpy.write_all(&buffer); } Err(err) => { - assert!(false, "Error producing song data: {:?}", err); + assert!(false, "Error: {:?}", err); } }; } Err(err) => { - println!("Error: {}", err); - assert!(false, "Failed to open file: {:?}", err); + assert!(false, "Error: {:?}", err); } - } - } - Err(err) => { - println!("Error: {}", err); - assert!(false, "Could not get song path: {:?}", err); - } - } -} - -#[test] -fn test_song_path_check() { - let mut song = song::Song::default(); - song.directory = get_tests_directory(); - song.filename = String::from("track01.flac"); - - assert!( - does_directory_exists(&song.directory), - "Directory does not exist" - ); -} - -#[test] -fn test_song_generate_filename() { - let mut song = song::Song::default(); - song.directory = get_tests_directory(); - song.filename = String::from("track01.flac"); - - match song.song_path() { - Ok(songpath) => match extract_data_from_file(&songpath) { - Ok(buffer) => { - let mut song_cpy = song.clone(); - let temp_dir = tempdir().expect("Failed to create temp dir"); - song_cpy.directory = match temp_dir.path().to_str() { - Some(s) => String::from(s), - None => String::new(), - }; - - assert_eq!(song.directory.is_empty(), false); - // song_cpy.directory = String::from(temp_dir.path().to_str()); - song_cpy.filename = song.generate_filename(types::MusicTypes::FlacExtension, true); - println!("Directory: {:?}", song_cpy.directory); - println!("File to be created: {:?}", song_cpy.filename); - - let path = match song_cpy.song_path() { - Ok(s_path) => s_path, - Err(err) => { - assert!(false, "Error: {:?}", err); - String::new() - } - }; - - match File::create(path) { - Ok(mut file_cpy) => { - let _ = file_cpy.write_all(&buffer); - } - Err(err) => { - assert!(false, "Error: {:?}", err); - } - }; - } + }, Err(err) => { - assert!(false, "Error: {:?}", err); + assert!(false, "Error extracting song data: {:?}", err); } - }, - Err(err) => { - assert!(false, "Error extracting song data: {:?}", err); } } } -} -- 2.43.0 From fd43a5cbe8c8a661bafca4c028f67708df72db46 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 22 Mar 2025 16:05:45 -0400 Subject: [PATCH 6/8] More test changes --- tests/tests.rs | 75 +++++++++++++++++--------------------------------- 1 file changed, 26 insertions(+), 49 deletions(-) diff --git a/tests/tests.rs b/tests/tests.rs index 752d766..ab96494 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -1,5 +1,4 @@ mod song_tests { - // use std::fs::{self, File}; use std::fs; use std::fs::File; use std::io::{Read, Write}; @@ -30,12 +29,7 @@ mod song_tests { let _ = file.read_to_end(&mut buffer); Ok(buffer) } - Err(err) => { - println!("Error: {}", err); - // assert!(false, "Failed to open file: {:?}", err); - // Err(4) - Err(err) - } + Err(err) => Err(err), } } @@ -49,22 +43,9 @@ mod song_tests { println!("Getting track"); let mut song = song::Song::default(); - song.filename = String::from("track01.flac"); - song.id = 1; - // println!("O ", song.id); - - // let temp_dir = tempdir().expect("Failed to create temp dir"); - - println!("Getting directory"); - /* - song.directory = match temp_dir.path().to_str() { - Some(s) => String::from(s), - None => { String::new() }, - }; - */ song.directory = get_tests_directory(); + song.filename = String::from("track01.flac"); - // assert_eq!(song.directory.is_empty(), false); assert!( does_directory_exists(&song.directory), "Directory does not exist" @@ -73,33 +54,25 @@ mod song_tests { println!("Directory: {}", song.directory); match song.song_path() { - Ok(filepath) => { - // let file_result = std::fs::File::open(filepath); - // match file_result { - match extract_data_from_file(&filepath) { - Ok(buffer) => { - // let mut buffer: Vec = Vec::new(); - // let _ = file.read_to_end(&mut buffer); - assert_eq!(buffer.is_empty(), false); + Ok(filepath) => match extract_data_from_file(&filepath) { + Ok(buffer) => { + assert_eq!(buffer.is_empty(), false); - match song.to_data() { - Ok(song_data) => { - println!("Both files match"); - assert_eq!(buffer, song_data); - } - Err(err) => { - assert!(false, "Error producing song data: {:?}", err); - } - }; - } - Err(err) => { - println!("Error: {}", err); - assert!(false, "Failed to open file: {:?}", err); - } + match song.to_data() { + Ok(song_data) => { + println!("Both files match"); + assert_eq!(buffer, song_data); + } + Err(err) => { + assert!(false, "Error producing song data: {:?}", err); + } + }; } - } + Err(err) => { + assert!(false, "Failed to open file: {:?}", err); + } + }, Err(err) => { - println!("Error: {}", err); assert!(false, "Could not get song path: {:?}", err); } } @@ -134,7 +107,6 @@ mod song_tests { }; assert_eq!(song.directory.is_empty(), false); - // song_cpy.directory = String::from(temp_dir.path().to_str()); song_cpy.filename = song.generate_filename(types::MusicTypes::FlacExtension, true); println!("Directory: {:?}", song_cpy.directory); @@ -149,9 +121,14 @@ mod song_tests { }; match File::create(path) { - Ok(mut file_cpy) => { - let _ = file_cpy.write_all(&buffer); - } + Ok(mut file_cpy) => match file_cpy.write_all(&buffer) { + Ok(success) => { + println!("Success: {:?}", success); + } + Err(err) => { + assert!(false, "Error saving file: {:?}", err); + } + }, Err(err) => { assert!(false, "Error: {:?}", err); } -- 2.43.0 From c9e234276fc54e2c47526961a0b269fd27b5e8b6 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 22 Mar 2025 16:07:08 -0400 Subject: [PATCH 7/8] Song changes --- src/song.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/song.rs b/src/song.rs index 13c8aa0..6c41b03 100644 --- a/src/song.rs +++ b/src/song.rs @@ -8,6 +8,7 @@ use rand::Rng; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Deserialize, Serialize)] +#[derive(Default)] pub struct Song { #[serde(skip_serializing_if = "is_zero")] #[serde(alias = "id")] @@ -64,6 +65,7 @@ fn is_dur_not_set(num: &i32) -> bool { *num == 0 } +/* impl Default for Song { fn default() -> Self { Song { @@ -92,6 +94,7 @@ impl Default for Song { } } } +*/ impl Song { pub fn to_metadata_json(&self, pretty: bool) -> Result { -- 2.43.0 From 8b8f123deb461659bf23e66aee999ee13d59514d Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 22 Mar 2025 16:08:16 -0400 Subject: [PATCH 8/8] Cleanup --- src/song.rs | 35 +---------------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/src/song.rs b/src/song.rs index 6c41b03..4d319dc 100644 --- a/src/song.rs +++ b/src/song.rs @@ -1,4 +1,3 @@ -// use std::default::Default; use std::io::Read; use crate::constants; @@ -7,8 +6,7 @@ use crate::types; use rand::Rng; use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Deserialize, Serialize)] -#[derive(Default)] +#[derive(Clone, Debug, Default, Deserialize, Serialize)] pub struct Song { #[serde(skip_serializing_if = "is_zero")] #[serde(alias = "id")] @@ -65,37 +63,6 @@ fn is_dur_not_set(num: &i32) -> bool { *num == 0 } -/* -impl Default for Song { - fn default() -> Self { - Song { - id: 0, - title: String::new(), - artist: String::new(), - album: String::new(), - album_artist: String::new(), - genre: String::new(), - year: 0, - duration: 0, - track: 0, - disc: 0, - disc_count: 0, - track_count: 0, - audio_type: String::new(), - date_created: String::new(), - filename: String::new(), - user_id: 0, - data: Vec::new(), - directory: String::new(), - // album_id: 0, - // artist_id: 0, - // genre_id: 0, - // coverart_id: 0, - } - } -} -*/ - impl Song { pub fn to_metadata_json(&self, pretty: bool) -> Result { if pretty { -- 2.43.0