Mercurial > hg > auditok
changeset 221:103458544a8b
Add round function parameter to _duration_to_nb_windows
author | Amine Sehili <amine.sehili@gmail.com> |
---|---|
date | Tue, 09 Jul 2019 20:59:29 +0100 |
parents | ed25ee654515 |
children | 38d7b281625c |
files | auditok/core.py tests/test_core.py |
diffstat | 2 files changed, 20 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/auditok/core.py Mon Jul 08 21:33:47 2019 +0100 +++ b/auditok/core.py Tue Jul 09 20:59:29 2019 +0100 @@ -174,7 +174,7 @@ return region_gen -def _duration_to_nb_windows(duration, analysis_window): +def _duration_to_nb_windows(duration, analysis_window, round_fn=round): """ Converts a given duration into a positive integer of analysis windows. if `duration / analysis_window` is not an integer, the result will be @@ -201,10 +201,7 @@ raise ValueError(err_msg.format(duration, analysis_window)) if duration == 0: return 0 - nb_windows, rest = divmod(duration, analysis_window) - if rest > 0: - nb_windows += 1 - return int(nb_windows) + return int(round_fn(duration / analysis_window)) def _make_audio_region(
--- a/tests/test_core.py Mon Jul 08 21:33:47 2019 +0100 +++ b/tests/test_core.py Tue Jul 09 20:59:29 2019 +0100 @@ -1,7 +1,8 @@ import os -from unittest import TestCase +import math from random import random from tempfile import TemporaryDirectory +from unittest import TestCase from genty import genty, genty_dataset from auditok import split, AudioRegion, AudioParameterError from auditok.core import _duration_to_nb_windows @@ -31,18 +32,25 @@ @genty class TestFunctions(TestCase): @genty_dataset( - zero_duration=(0, 1, 0), - multiple=(0.3, 0.1, 3), - not_multiple=(0.35, 0.1, 4), - small_duration=(0.05, 0.1, 1), + zero_duration=(0, 1, None, 0), + multiple=(0.3, 0.1, round, 3), + not_multiple_ceil=(0.35, 0.1, math.ceil, 4), + not_multiple_floor=(0.35, 0.1, math.floor, 3), + small_duration=(0.05, 0.1, round, 0), + small_duration_ceil=(0.05, 0.1, math.ceil, 1), + negative_duration=(-0.5, 0.1, math.ceil, ValueError), + negative_analysis_window=(0.5, -0.1, math.ceil, ValueError), ) - def test_duration_to_nb_windows(self, duration, analysis_window, expected): - - if issubclass(expected.__class__, Exception): + def test_duration_to_nb_windows( + self, duration, analysis_window, round_fn, expected + ): + if expected == ValueError: with self.assertRaises(expected): - _duration_to_nb_windows(duration, analysis_window) + _duration_to_nb_windows(duration, analysis_window, round_fn) else: - result = _duration_to_nb_windows(duration, analysis_window) + result = _duration_to_nb_windows( + duration, analysis_window, round_fn + ) self.assertEqual(result, expected)