From d1f1bf4197d4ba30b1051a40b2698ef5a648482b Mon Sep 17 00:00:00 2001 From: Mourad Kejji Date: Fri, 2 Apr 2021 16:53:24 +0200 Subject: [PATCH] Null safetly --- lib/src/wave_builder_base.dart | 12 ++--- pubspec.yaml | 2 +- test/wave_builder_test.dart | 80 +++++++++++++++++----------------- 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/lib/src/wave_builder_base.dart b/lib/src/wave_builder_base.dart index 34c9605..dbe438e 100644 --- a/lib/src/wave_builder_base.dart +++ b/lib/src/wave_builder_base.dart @@ -14,7 +14,7 @@ class WaveBuilder { static const int AUDIO_FORMAT = 1; static const int BYTE_SIZE = 8; - int _lastSampleSize; + int _lastSampleSize = 0; /// Finalizes the header sizes and returns bytes List get fileBytes { @@ -22,14 +22,14 @@ class WaveBuilder { return _outputBytes; } - List _outputBytes; + List _outputBytes = []; final Utf8Encoder _utf8encoder = Utf8Encoder(); - int _dataChunkSizeIndex; + int _dataChunkSizeIndex = 0; - int _bitRate; - int _frequency; - int _numChannels; + int _bitRate = 16; + int _frequency = 44100; + int _numChannels = 2; /// Construct a wave builder. /// Supply audio file properties. diff --git a/pubspec.yaml b/pubspec.yaml index 60d8671..6a934e5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,7 +4,7 @@ version: 1.0.4 homepage: https://github.com/timkellypa/wave_builder environment: - sdk: '>=2.7.0 <3.0.0' + sdk: '>=2.12.0 <3.0.0' #dependencies: # path: ^1.6.0 diff --git a/test/wave_builder_test.dart b/test/wave_builder_test.dart index 70b740d..421a77f 100644 --- a/test/wave_builder_test.dart +++ b/test/wave_builder_test.dart @@ -16,7 +16,7 @@ const int NUM_CHANNELS = 2; void main() { group('WaveBuilder', () { - WaveBuilder waveBuilder; + WaveBuilder? waveBuilder; setUp(() { waveBuilder = WaveBuilder(); }); @@ -27,18 +27,18 @@ void main() { group('#constructor', () { test('it initializes outputBytes and initializes chunks', () { - expect(waveBuilder.fileBytes.length, 44); + expect(waveBuilder?.fileBytes.length, 44); }); test('it adds RIFF chunk', () { var riff = 'RIFF'.codeUnits; - expect(waveBuilder.fileBytes.getRange(0, 4), riff); + expect(waveBuilder?.fileBytes.getRange(0, 4), riff); var wave = 'WAVE'.codeUnits; // do not test length here, because it is already calculated as non-zero // (file length minus this section) - expect(waveBuilder.fileBytes.getRange(8, 12), wave); + expect(waveBuilder?.fileBytes.getRange(8, 12), wave); }); test('it adds format chunk', () { @@ -47,33 +47,33 @@ void main() { bitsPerSample = BIT_RATE; var fmt = 'fmt '.codeUnits; - expect(waveBuilder.fileBytes.getRange(12, 16), fmt); - expect(waveBuilder.fileBytes.getRange(16, 20), + expect(waveBuilder?.fileBytes.getRange(12, 16), fmt); + expect(waveBuilder?.fileBytes.getRange(16, 20), ByteUtils.numberAsByteList(SUB_CHUNK_SIZE, 4, bigEndian: false)); - expect(waveBuilder.fileBytes.getRange(20, 22), + expect(waveBuilder?.fileBytes.getRange(20, 22), ByteUtils.numberAsByteList(AUDIO_FORMAT, 2, bigEndian: false)); - expect(waveBuilder.fileBytes.getRange(22, 24), + expect(waveBuilder?.fileBytes.getRange(22, 24), ByteUtils.numberAsByteList(NUM_CHANNELS, 2, bigEndian: false)); - expect(waveBuilder.fileBytes.getRange(24, 28), + expect(waveBuilder?.fileBytes.getRange(24, 28), ByteUtils.numberAsByteList(FREQUENCY, 4, bigEndian: false)); - expect(waveBuilder.fileBytes.getRange(28, 32), + expect(waveBuilder?.fileBytes.getRange(28, 32), ByteUtils.numberAsByteList(byteRate, 4, bigEndian: false)); - expect(waveBuilder.fileBytes.getRange(32, 34), + expect(waveBuilder?.fileBytes.getRange(32, 34), ByteUtils.numberAsByteList(blockAlign, 2, bigEndian: false)); - expect(waveBuilder.fileBytes.getRange(34, 36), + expect(waveBuilder?.fileBytes.getRange(34, 36), ByteUtils.numberAsByteList(bitsPerSample, 2, bigEndian: false)); }); test('it adds data chunk', () { var data = 'data'.codeUnits; - expect(waveBuilder.fileBytes.getRange(36, 40), data); - expect(waveBuilder.fileBytes.getRange(40, 44), [0, 0, 0, 0]); + expect(waveBuilder?.fileBytes.getRange(36, 40), data); + expect(waveBuilder?.fileBytes.getRange(40, 44), [0, 0, 0, 0]); }); }); @@ -86,14 +86,14 @@ void main() { testNewFile.addAll([0, 0, 0, 4]); testNewFile.addAll([1, 2, 3, 4]); - waveBuilder.appendFileContents(testNewFile); - expect(waveBuilder.fileBytes.getRange(44, 48), [1, 2, 3, 4]); + waveBuilder?.appendFileContents(testNewFile); + expect(waveBuilder?.fileBytes.getRange(44, 48), [1, 2, 3, 4]); }); test('it appends all file contents if data string does not exist', () { var testNewFile = [1, 1, 1, 2]; - waveBuilder.appendFileContents(testNewFile); - expect(waveBuilder.fileBytes.getRange(44, 48), [1, 1, 1, 2]); + waveBuilder?.appendFileContents(testNewFile); + expect(waveBuilder?.fileBytes.getRange(44, 48), [1, 1, 1, 2]); }); }); @@ -103,13 +103,13 @@ void main() { var testNewFile = [1, 1, 1, 2]; var byteRate = FREQUENCY * BIT_RATE ~/ 8; var silenceLength = byteRate * NUM_CHANNELS; - waveBuilder.appendFileContents(testNewFile); - waveBuilder.appendSilence( + waveBuilder?.appendFileContents(testNewFile); + waveBuilder?.appendSilence( 1000, WaveBuilderSilenceType.EndOfLastSample); - expect(waveBuilder.fileBytes.getRange(44, 48), [1, 1, 1, 2]); - expect(waveBuilder.fileBytes[49], 0); - expect(waveBuilder.fileBytes[48 + silenceLength - 1], 0); - expect(waveBuilder.fileBytes.length, 48 + silenceLength); + expect(waveBuilder?.fileBytes.getRange(44, 48), [1, 1, 1, 2]); + expect(waveBuilder?.fileBytes[49], 0); + expect(waveBuilder?.fileBytes[48 + silenceLength - 1], 0); + expect(waveBuilder?.fileBytes.length, 48 + silenceLength); }); }); @@ -118,13 +118,13 @@ void main() { var testNewFile = [1, 1, 1, 2]; var byteRate = FREQUENCY * BIT_RATE ~/ 8; var silenceLength = byteRate * NUM_CHANNELS; - waveBuilder.appendFileContents(testNewFile); - waveBuilder.appendSilence( + waveBuilder?.appendFileContents(testNewFile); + waveBuilder?.appendSilence( 1000, WaveBuilderSilenceType.BeginningOfLastSample); - expect(waveBuilder.fileBytes.getRange(44, 48), [1, 1, 1, 2]); - expect(waveBuilder.fileBytes[49], 0); - expect(waveBuilder.fileBytes[48 + silenceLength - 4 - 1], 0); - expect(waveBuilder.fileBytes.length, 48 + silenceLength - 4); + expect(waveBuilder?.fileBytes.getRange(44, 48), [1, 1, 1, 2]); + expect(waveBuilder?.fileBytes[49], 0); + expect(waveBuilder?.fileBytes[48 + silenceLength - 4 - 1], 0); + expect(waveBuilder?.fileBytes.length, 48 + silenceLength - 4); }); test( 'it truncates last sample appropriately if silence is less than last sample size', @@ -132,12 +132,12 @@ void main() { var byteRate = FREQUENCY * BIT_RATE ~/ 8; var silenceLength = byteRate * NUM_CHANNELS; var testNewFile = List.filled(silenceLength + 4, 1); - waveBuilder.appendFileContents(testNewFile); - waveBuilder.appendSilence( + waveBuilder?.appendFileContents(testNewFile); + waveBuilder?.appendSilence( 1000, WaveBuilderSilenceType.BeginningOfLastSample); - expect(waveBuilder.fileBytes.length, 44 + silenceLength); - expect(waveBuilder.fileBytes[48 + 1], 1); - expect(waveBuilder.fileBytes[testNewFile.length - 1], 1); + expect(waveBuilder?.fileBytes.length, 44 + silenceLength); + expect(waveBuilder?.fileBytes[48 + 1], 1); + expect(waveBuilder?.fileBytes[testNewFile.length - 1], 1); }); }); }); @@ -145,13 +145,13 @@ void main() { group('#finalize', () { test('it updates riff chunk size', () { // finalize is called for every fileBytes getter - waveBuilder.appendFileContents([1, 2, 3, 4]); - expect(waveBuilder.fileBytes[RIFF_CHUNK_SIZE_INDEX], 40); + waveBuilder?.appendFileContents([1, 2, 3, 4]); + expect(waveBuilder?.fileBytes[RIFF_CHUNK_SIZE_INDEX], 40); }); test('it updates data chunk size', () { - waveBuilder.appendFileContents([1, 2, 3, 4]); - expect(waveBuilder.fileBytes[40], 4); + waveBuilder?.appendFileContents([1, 2, 3, 4]); + expect(waveBuilder?.fileBytes[40], 4); }); }); @@ -165,7 +165,7 @@ void main() { testNewFile.addAll([1, 2, 3, 4]); - expect(waveBuilder.getDataChunk(testNewFile), [1, 2, 3, 4]); + expect(waveBuilder?.getDataChunk(testNewFile), [1, 2, 3, 4]); }); }); });