]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/id3/id3-tests.factor
Fixes #2966
[factor.git] / extra / id3 / id3-tests.factor
index d84f2c87260dedb2c9975f3a319b04441d41e740..2967a93a659518ad261be9fe6585c963efa6b604 100644 (file)
 ! Copyright (C) 2009 Tim Wawrzynczak
-! See http://factorcode.org/license.txt for BSD license.
-USING: tools.test id3 ;
+! See https://factorcode.org/license.txt for BSD license.
+USING: tools.test id3 combinators grouping id3.private
+sequences math ;
 IN: id3.tests
 
-[ T{ mp3v2-file
-     { header  T{ header f t 0 502 } }
-     { frames
-       {
-           T{ frame
-              { frame-id "COMM" }
-              { flags B{ 0 0 } }
-              { size 19 }
-              { data "eng, AG# 08E1C12E" }
-           }
-           T{ frame
-              { frame-id "TIT2" }
-              { flags B{ 0 0 } }
-              { size 15 }
-              { data "Stormy Weather" }
-           }
-           T{ frame
-              { frame-id "TRCK" }
-              { flags B{ 0 0 } }
-              { size 3 }
-              { data "32" }
-           }
-           T{ frame
-              { frame-id "TCON" }
-              { flags B{ 0 0 } }
-              { size 5 }
-              { data "(96)" }
-           }
-           T{ frame
-              { frame-id "TALB" }
-              { flags B{ 0 0 } }
-              { size 28 }
-              { data "Night and Day Frank Sinatra" }
-           }
-           T{ frame
-              { frame-id "PRIV" }
-              { flags B{ 0 0 } }
-              { size 39 }
-              { data "WM/MediaClassPrimaryID�}`�#��K�H�*(D" }
-           }
-           T{ frame
-              { frame-id "PRIV" }
-              { flags B{ 0 0 } }
-              { size 41 }
-              { data "WM/MediaClassSecondaryID" }
-           }
-           T{ frame
-              { frame-id "TPE1" }
-              { flags B{ 0 0 } }
-              { size 14 }
-              { data "Frank Sinatra" }
-           }
-       }
-     }
-}
-] [ "resource:extra/id3/tests/blah3.mp3" id3-parse-mp3-file ] unit-test
+: id3-params ( id3 -- title artist album year comment genre )
+    {
+        [ title ]
+        [ artist ]
+        [ album ]
+        [ year ]
+        [ comment ]
+        [ genre ]
+    } cleave ;
 
-[
-    T{ mp3v2-file
-    { header
-        T{ header { version t } { flags 0 } { size 1405 } }
-    }
-    { frames
-        {
-            T{ frame
-                { frame-id "TIT2" }
-                { flags B{ 0 0 } }
-                { size 22 }
-                { data "Anthem of the Trinity" }
-            }
-            T{ frame
-                { frame-id "TPE1" }
-                { flags B{ 0 0 } }
-                { size 12 }
-                { data "Terry Riley" }
-            }
-            T{ frame
-                { frame-id "TALB" }
-                { flags B{ 0 0 } }
-                { size 11 }
-                { data "Shri Camel" }
-            }
-            T{ frame
-                { frame-id "TCON" }
-                { flags B{ 0 0 } }
-                { size 10 }
-                { data "Classical" }
-            }
-            T{ frame
-                { frame-id "UFID" }
-                { flags B{ 0 0 } }
-                { size 23 }
-                { data "http://musicbrainz.org" }
-            }
-            T{ frame
-                { frame-id "TXXX" }
-                { flags B{ 0 0 } }
-                { size 23 }
-                { data "MusicBrainz Artist Id" }
-            }
-            T{ frame
-                { frame-id "TXXX" }
-                { flags B{ 0 0 } }
-                { size 22 }
-                { data "musicbrainz_artistid" }
-            }
-            T{ frame
-                { frame-id "TRCK" }
-                { flags B{ 0 0 } }
-                { size 2 }
-                { data "1" }
-            }
-            T{ frame
-                { frame-id "TXXX" }
-                { flags B{ 0 0 } }
-                { size 22 }
-                { data "MusicBrainz Album Id" }
-            }
-            T{ frame
-                { frame-id "TXXX" }
-                { flags B{ 0 0 } }
-                { size 21 }
-                { data "musicbrainz_albumid" }
-            }
-            T{ frame
-                { frame-id "TXXX" }
-                { flags B{ 0 0 } }
-                { size 29 }
-                { data "MusicBrainz Album Artist Id" }
-            }
-            T{ frame
-                { frame-id "TXXX" }
-                { flags B{ 0 0 } }
-                { size 27 }
-                { data "musicbrainz_albumartistid" }
-            }
-            T{ frame
-                { frame-id "TPOS" }
-                { flags B{ 0 0 } }
-                { size 2 }
-                { data "1" }
-            }
-            T{ frame
-                { frame-id "TSOP" }
-                { flags B{ 0 0 } }
-                { size 1 }
-            }
-            T{ frame
-                { frame-id "TMED" }
-                { flags B{ 0 0 } }
-                { size 4 }
-                { data "DIG" }
-            }
-        }
-    }
-}
-] [ "resource:extra/id3/tests/blah2.mp3" id3-parse-mp3-file ] unit-test
+{
+    "BLAH"
+    "ARTIST"
+    "ALBUM"
+    "2009"
+    "COMMENT"
+    "Bluegrass"
+} [ "vocab:id3/tests/blah.mp3" mp3>id3 id3-params ] unit-test
 
-[    
-  T{ mp3v1-file
-     { title
-       "BLAH\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-     }
-     { artist
-       "ARTIST\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-     }
-     { album
-       "ALBUM\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-     }
-     { year "2009" }
-     { comment
-       "COMMENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-     }
-     { genre 89 }
-  }
-] [ "resource:extra/id3/tests/blah.mp3" id3-parse-mp3-file ] unit-test
+{
+    "Anthem of the Trinity"
+    "Terry Riley"
+    "Shri Camel"
+    f
+    f
+    "Classical"
+} [ "vocab:id3/tests/blah2.mp3" mp3>id3 id3-params ] unit-test
 
+{
+    "Stormy Weather"
+    "Frank Sinatra"
+    "Night and Day Frank Sinatra"
+     f
+    "eng, AG# 08E1C12E"
+    "Big Band"
+} [ "vocab:id3/tests/blah3.mp3" mp3>id3 id3-params ] unit-test
+
+
+{ t }
+[ 10000 <iota> [ synchsafe>sequence sequence>synchsafe ] map [ < ] monotonic? ] unit-test