Beispiel #1
0
        public void Copy()
        {
            var path = String.Format( @"{0}\TestData\test.wma", AppDomain.CurrentDomain.BaseDirectory );
            using( var src = new FileStream( path, FileMode.Open, FileAccess.Read ) )
            {
                var obj1 = new HeaderObject( src );

                // 複製
                var dest = new MemoryStream();
                obj1.Save( dest );
                dest.Seek( 0, SeekOrigin.Begin );
                Assert.AreEqual( obj1.Size, dest.Length, "サイズ" );

                // 値
                var obj2 = new HeaderObject( dest );
                {
                    // FilePropertiesObject
                    var duration1 = obj1.Read( AsfTags.Duration ) as TimeSpan?;
                    var duration2 = obj2.Read( AsfTags.Duration ) as TimeSpan?;
                    Assert.AreEqual( duration1, duration2, "演奏時間" );

                    // ContentDescription
                    var title1 = obj1.Read( AsfTags.Title ) as string;
                    var title2 = obj2.Read( AsfTags.Title ) as string;
                    Assert.AreEqual( title1, title2, "タイトル" );

                    // ExtendedContentDescription
                    var album1 = obj1.Read( AsfTags.AlbumTitle ) as string;
                    var album2 = obj2.Read( AsfTags.AlbumTitle ) as string;
                    Assert.AreEqual( album1, album2, "アルバム" );
                }
            }
        }
Beispiel #2
0
        public void HasValue()
        {
            // ASF ヘッダー
            using( var src = this.CreateTestHeader( new IAsfObject[] { new FilePropertiesObject( null ) } ) )
            {
                var headerObject = new HeaderObject( src );

                // null 参照
                Assert.Throws< ArgumentNullException >( () =>
                {
                    headerObject.HasValue( null );
                } );

                // 所持、未所持チェック
                Assert.AreEqual( true,  headerObject.HasValue( AsfTags.FileSize ) );
                Assert.AreEqual( false, headerObject.HasValue( AsfTags.Title    ) );
            }
        }
Beispiel #3
0
 /// <summary>
 /// インスタンスを初期化します。
 /// </summary>
 /// <param name="src">ASF ファイルのストリーム。</param>
 /// <exception cref="NotSupportedException">src の指す対象が ASF 形式ではありません。</exception>
 public AsfTagEditor( Stream src )
 {
     this._header       = new HeaderObject( src );
     this._bodyPosition = this._header.Size;
     this._src          = src;
 }
Beispiel #4
0
        public void IsAsf()
        {
            // null 参照
            Assert.Throws< ArgumentNullException >( () =>
            {
                var headerObject = new HeaderObject( null );
            } );

            // ASF 形式ではない
            Assert.Throws< NotSupportedException >( () =>
            {
                using( var src = new MemoryStream() )
                {
                    var headerObject = new HeaderObject( src );
                }
            } );

            // ASF ヘッダー
            using( var src = this.CreateTestHeader( null ) )
            {
                var headerObject = new HeaderObject( src );
                Assert.AreEqual( src.Length, headerObject.Size );
            }
        }
Beispiel #5
0
        public void Read()
        {
            // ASF ヘッダー
            using( var src = this.CreateTestHeader( new IAsfObject[] { new FilePropertiesObject( null ) } ) )
            {
                var headerObject = new HeaderObject( src );

                // null 参照
                Assert.Throws< ArgumentNullException >( () =>
                {
                    headerObject.Read( null );
                } );

                // 読み込みテスト
                // HeaderObject しか書き込んでいないので、ファイルサイズはヘッダーのサイズと等しいはず
                // Title は書き込んでいないので null になるはず
                //
                Assert.AreEqual( headerObject.Size, headerObject.Read( AsfTags.FileSize ) );
                Assert.AreEqual( null,              headerObject.Read( AsfTags.Title    ) );
            }
        }