public void TagCompression() { var frameHelper = new FrameHelper(new TagModel().Header); var originalFrame = (FrameText)FrameFactory.Build("TALB"); originalFrame.Text = "Hello World!!!"; originalFrame.Compression = true; var body = frameHelper.Make(originalFrame, out var flags); Assert.AreEqual( ((FrameText)frameHelper.Build("TALB", flags, body)).Text, originalFrame.Text); }
public void TagCompression() { TagModel frameModel = new TagModel(); FrameHelper frameHelper = new FrameHelper(frameModel.Header); FrameText originalFrame = (FrameText)FrameFactory.Build("TALB"); originalFrame.Text = "Hello World!!!"; originalFrame.Compression = true; ushort flags; byte[] body = frameHelper.Make(originalFrame, out flags); FrameText resultFrame = (FrameText)frameHelper.Build("TALB", flags, body); Assert.AreEqual(resultFrame.Text, originalFrame.Text); }
internal MetadataToTagModelAdapter(MetadataDictionary metadata, SettingsDictionary settings) { Contract.Requires(metadata != null); Contract.Requires(settings != null); var trckFrame = new TrckFrame(); var tdatFrame = new TdatFrame(); var trackSoundCheckFrame = new SoundCheckFrame(); var albumSoundCheckFrame = new SoundCheckFrame(); foreach (var item in metadata) { switch (item.Key) { case "TrackNumber": trckFrame.TrackNumber = item.Value; break; case "TrackCount": trckFrame.TrackCount = item.Value; break; case "Day": tdatFrame.Day = item.Value; break; case "Month": tdatFrame.Month = item.Value; break; // The standard comment field has a blank description: case "Comment": var commentFrame = (FrameFullText)FrameFactory.Build("COMM"); commentFrame.Text = item.Value; Add(commentFrame); break; case "TrackGain": trackSoundCheckFrame.Gain = item.Value; var trackGainFrame = (FrameTextUserDef)FrameFactory.Build("TXXX"); trackGainFrame.Description = "REPLAYGAIN_TRACK_GAIN"; trackGainFrame.Text = item.Value; trackGainFrame.FileAlter = true; Add(trackGainFrame); break; case "TrackPeak": trackSoundCheckFrame.Peak = item.Value; var trackPeakFrame = (FrameTextUserDef)FrameFactory.Build("TXXX"); trackPeakFrame.Description = "REPLAYGAIN_TRACK_PEAK"; trackPeakFrame.Text = item.Value; trackPeakFrame.FileAlter = true; Add(trackPeakFrame); break; case "AlbumGain": albumSoundCheckFrame.Gain = item.Value; var albumGainFrame = (FrameTextUserDef)FrameFactory.Build("TXXX"); albumGainFrame.Description = "REPLAYGAIN_ALBUM_GAIN"; albumGainFrame.Text = item.Value; albumGainFrame.FileAlter = true; Add(albumGainFrame); break; case "AlbumPeak": albumSoundCheckFrame.Peak = item.Value; var albumPeakFrame = (FrameTextUserDef)FrameFactory.Build("TXXX"); albumPeakFrame.Description = "REPLAYGAIN_ALBUM_PEAK"; albumPeakFrame.Text = item.Value; albumPeakFrame.FileAlter = true; Add(albumPeakFrame); break; // Every other field should be treated as text: default: string mappedKey; if (_map.TryGetValue(item.Key, out mappedKey)) { var textFrame = (FrameText)FrameFactory.Build(mappedKey); textFrame.Text = item.Value; Add(textFrame); } break; } } if (!string.IsNullOrEmpty(trckFrame.Text)) { Add(trckFrame); } if (!string.IsNullOrEmpty(tdatFrame.Text)) { Add(tdatFrame); } if (!string.IsNullOrEmpty(settings["AddSoundCheck"]) && string.Compare(settings["AddSoundCheck"], bool.FalseString, StringComparison.OrdinalIgnoreCase) != 0) { if (string.Compare(settings["AddSoundCheck"], "Album", StringComparison.OrdinalIgnoreCase) == 0) { if (string.IsNullOrEmpty(albumSoundCheckFrame.Gain)) { throw new InvalidSettingException(Resources.MetadataToTagModelAdapterMissingAlbumGain); } if (string.IsNullOrEmpty(albumSoundCheckFrame.Peak)) { throw new InvalidSettingException(Resources.MetadataToTagModelAdapterMissingAlbumPeak); } Add(albumSoundCheckFrame); } else if (string.Compare(settings["AddSoundCheck"], "Track", StringComparison.OrdinalIgnoreCase) == 0) { if (string.IsNullOrEmpty(trackSoundCheckFrame.Gain)) { throw new InvalidSettingException(Resources.MetadataToTagModelAdapterMissingTrackGain); } if (string.IsNullOrEmpty(trackSoundCheckFrame.Peak)) { throw new InvalidSettingException(Resources.MetadataToTagModelAdapterMissingTrackPeak); } Add(trackSoundCheckFrame); } else { throw new InvalidSettingException(string.Format(CultureInfo.CurrentCulture, Resources.MetadataToTagModelAdapterBadAddSoundCheck, settings["AddSoundCheck"])); } } if (metadata.CoverArt != null) { Add(new CoverArtToFrameAdapter(metadata.CoverArt)); } }