A few unit tests + refacts

This commit is contained in:
Nikolaj Olsson 2019-09-17 16:15:59 +02:00
parent 59adc0f7be
commit cdc6b2725f
5 changed files with 149 additions and 10 deletions

View File

@ -7,7 +7,7 @@ namespace Nikse.SubtitleEdit.Core
public static class TextEncodingExtensions
{
// IANA registered EBCDIC character sets (https://www.iana.org/assignments/character-sets/character-sets.xml)
private static readonly HashSet<string> _ebcdicNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
private static readonly HashSet<string> EbcdicNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
{
"IBM037", "IBM500", "IBM870", "cp875", "IBM1026", "IBM01140", "IBM01141", "IBM01142", "IBM01143", "IBM01144", "IBM01145", "IBM01146", "IBM01147", "IBM01148", "IBM01149", "IBM273", "IBM277",
"IBM278", "IBM280", "IBM284", "IBM285", "IBM290", "IBM297", "IBM420", "IBM423", "IBM424", "x-EBCDIC-KoreanExtended", "IBM-Thai", "IBM871", "IBM880", "IBM905", "cp1025", "IBM01047", "OSD_EBCDIC_DF04_15",
@ -27,7 +27,7 @@ namespace Nikse.SubtitleEdit.Core
public static bool IsEbcdic(this Encoding encoding)
{
return _ebcdicNames.Contains(encoding.WebName);
return EbcdicNames.Contains(encoding.WebName);
}
}

View File

@ -3017,7 +3017,7 @@ namespace Nikse.SubtitleEdit.Forms
}
}
private bool _editProfileOn = false;
private bool _editProfileOn;
private void comboBoxRulesProfileName_SelectedIndexChanged(object sender, EventArgs e)
{
_editProfileOn = true;

View File

@ -0,0 +1,45 @@
using Nikse.SubtitleEdit.Core;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Test.Core
{
[TestClass]
public class CharUtilsTest
{
[TestMethod]
public void IsDigit()
{
Assert.AreEqual(true, CharUtils.IsDigit('0'));
Assert.AreEqual(true, CharUtils.IsDigit('1'));
Assert.AreEqual(true, CharUtils.IsDigit('2'));
Assert.AreEqual(true, CharUtils.IsDigit('3'));
Assert.AreEqual(true, CharUtils.IsDigit('4'));
Assert.AreEqual(true, CharUtils.IsDigit('5'));
Assert.AreEqual(true, CharUtils.IsDigit('6'));
Assert.AreEqual(true, CharUtils.IsDigit('7'));
Assert.AreEqual(true, CharUtils.IsDigit('8'));
Assert.AreEqual(true, CharUtils.IsDigit('9'));
Assert.AreEqual(false, CharUtils.IsDigit('.'));
Assert.AreEqual(false, CharUtils.IsDigit('A'));
Assert.AreEqual(false, CharUtils.IsDigit(' '));
Assert.AreEqual(false, CharUtils.IsDigit('z'));
}
[TestMethod]
public void IsEnglishAlphabet()
{
Assert.AreEqual(true, CharUtils.IsEnglishAlphabet('a'));
Assert.AreEqual(true, CharUtils.IsEnglishAlphabet('b'));
Assert.AreEqual(true, CharUtils.IsEnglishAlphabet('z'));
Assert.AreEqual(true, CharUtils.IsEnglishAlphabet('A'));
Assert.AreEqual(true, CharUtils.IsEnglishAlphabet('Y'));
Assert.AreEqual(true, CharUtils.IsEnglishAlphabet('Z'));
Assert.AreEqual(false, CharUtils.IsEnglishAlphabet('æ'));
Assert.AreEqual(false, CharUtils.IsEnglishAlphabet('ü'));
Assert.AreEqual(false, CharUtils.IsEnglishAlphabet('2'));
Assert.AreEqual(false, CharUtils.IsEnglishAlphabet('!'));
}
}
}

View File

@ -38,12 +38,12 @@ namespace Test.Core
{
var parser = new SeJsonParser();
var result = parser.GetAllTagsByNameAsStrings("{" + Environment.NewLine +
"\"name\":\"John\"," + Environment.NewLine +
"\"age\":30," + Environment.NewLine +
"\"cars\": [" + Environment.NewLine +
"{ \"name\":\"Ford\", \"content\":\"Fiesta\" }," + Environment.NewLine +
"{ \"name\":\"BMW\", \"content\": \"X3\"}," + Environment.NewLine +
"{ \"name\":\"Fiat\", \"content\": \"500\" } ]}", "content");
"\"name\":\"John\"," + Environment.NewLine +
"\"age\":30," + Environment.NewLine +
"\"cars\": [" + Environment.NewLine +
"{ \"name\":\"Ford\", \"content\":\"Fiesta\" }," + Environment.NewLine +
"{ \"name\":\"BMW\", \"content\": \"X3\"}," + Environment.NewLine +
"{ \"name\":\"Fiat\", \"content\": \"500\" } ]}", "content");
Assert.AreEqual("Fiesta", result[0]);
Assert.AreEqual("X3", result[1]);
Assert.AreEqual("500", result[2]);
@ -80,5 +80,98 @@ namespace Test.Core
var result = parser.GetAllTagsByNameAsStrings("[{ \"content\" : null }]", "content");
Assert.AreEqual("null", result[0]);
}
[TestMethod]
public void GetArrayElementsByName_Simple()
{
var parser = new SeJsonParser();
var result = parser.GetArrayElementsByName("{ \"items\": [ { \"name\" : \"Joe1\" },{ \"name\" : \"Joe2\" } ] }", "items");
Assert.AreEqual(2, result.Count);
Assert.AreEqual("{ \"name\" : \"Joe1\" }", result[0].Trim());
Assert.AreEqual("{ \"name\" : \"Joe2\" }", result[1].Trim());
}
[TestMethod]
public void GetArrayElementsByName_Simple_Compact()
{
var parser = new SeJsonParser();
var result = parser.GetArrayElementsByName("{\"items\":[{\"name\":\"Joe1\"},{\"name\":\"Joe2\"}]}", "items");
Assert.AreEqual(2, result.Count);
Assert.AreEqual("{\"name\":\"Joe1\"}", result[0].Trim());
Assert.AreEqual("{\"name\":\"Joe2\"}", result[1].Trim());
}
[TestMethod]
public void GetArrayElementsByName_Empty_Array()
{
var parser = new SeJsonParser();
var result = parser.GetArrayElementsByName("{ \"start_time\": \"118.64\", \"items\": [] }", "items");
Assert.AreEqual(1, result.Count);
Assert.AreEqual("", result[0].Trim());
}
[TestMethod]
public void GetArrayElementsByName_Advanced()
{
var parser = new SeJsonParser();
var result = parser.GetArrayElementsByName(@"{
'results': {
'transcripts': [
{
'transcript': 'em águas brasileiras estão achado mais antigo que o homem. Pré sal pré sal começa a se formar mais de cem milhões de Jonas com Regina. Salas ainda habitavam até os postos são de altíssima produtividade. As grandes reservas de petróleo foram descobertas em dois mil e seis. Dois anos depois, o Brasil começava a produzir petróleo retirado do pré sal. E hoje, quando a gente olha para trás, era muito desconhecido. são dez anos, vem sendo desafios para isso. As equipes contam com tecnologia especialmente desenvolvida para o pré sal. Muitas soluções saíram do Centro de Pesquisas da Petrobras Cenpes, no Rio de Janeiro. Aqui, pesquisadores inventaram técnicas que não existiam no mercado, coisa que o geofísico desenvolveram técnicas de processamento muito especial de matemática pesada. Para tentar mostrar de maneira mais óbvia onde estava roxa de pessoal, a área do pré sal fica a trezentos quilômetros da costa que vai do Espírito Santo a Santa Catarina, uma extensão de oitocentos quilômetros. O petróleo está a sete mil metros de profundidade, abaixo de uma espessa camada de sal, que funciona como um sino. Ao contrário do que muita gente acha que o petróleo tem, piscinas, debaixo do Mar Petróleo se aloja nesses buracos nessas horas, muitas dessas rochas estão no fundo da Bacia de Santos, no litoral de São Paulo. Metade da produção de petróleo que a gente tem aqui no Brasil vem do pré sal, e um terço do gás que é consumido pelo Brasil também vem do pré sal. Então, se a gente não tivesse descoberto e desenvolvido essa tecnologia toda para poder operar as plataformas, hoje a gente estaria muito mais dependente do mercado externo. A jornada do conhecimento da tecnologia trouxe para a Petrobras a inovação que certamente para nós, hoje são ativos, são mais importantes do que o petróleo.'
}
],
'speaker_labels': {
'speakers': 4,
'segments': [
{
'start_time': '5.17',
'speaker_label': 'spk_0',
'end_time': '9.25',
'items': [
{
'start_time': '5.17',
'speaker_label': 'spk_0',
'end_time': '5.37'
},
{
'start_time': '105.54',
'speaker_label': 'spk_1',
'end_time': '106.09'
}
]
}
]
},
'items': [
{
'start_time': '5.17',
'end_time': '5.37',
'alternatives': [
{
'confidence': '0.9999',
'content': 'em'
}
],
'type': 'pronunciation'
},
{
'start_time': '5.37',
'end_time': '5.67',
'alternatives': [
{
'confidence': '0.9999',
'content': 'águas'
}
],
'type': 'pronunciation'
}
]
},
'status': 'COMPLETED'
}".Replace('\'', '"'), "items");
Assert.AreEqual(4, result.Count);
}
}
}

View File

@ -45,6 +45,7 @@
<Reference Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="Core\CharUtilsTest.cs" />
<Compile Include="Core\SeJsonParserTest.cs" />
<Compile Include="Core\FixCasingTest.cs" />
<Compile Include="Core\LanguageAutoDetectTest.cs" />