-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Bojan Pavlovic
committed
Dec 21, 2022
1 parent
fffc779
commit 8ba8bcb
Showing
14 changed files
with
652 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
[*.cs] | ||
|
||
# IDE0057: Use range operator | ||
dotnet_diagnostic.IDE0057.severity = none |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<TargetFramework>net6.0</TargetFramework> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
<Nullable>enable</Nullable> | ||
|
||
<IsPackable>false</IsPackable> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<None Include="..\.editorconfig" Link=".editorconfig" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" /> | ||
<PackageReference Include="xunit" Version="2.4.2" /> | ||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5"> | ||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||
<PrivateAssets>all</PrivateAssets> | ||
</PackageReference> | ||
<PackageReference Include="coverlet.collector" Version="3.1.2"> | ||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||
<PrivateAssets>all</PrivateAssets> | ||
</PackageReference> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="..\LetterConvert\TextConvert.csproj" /> | ||
</ItemGroup> | ||
|
||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
using TextConvert; | ||
using TextConvert.Enums; | ||
namespace UnitTest.API.LIB.Letters | ||
{ | ||
public class LettersConvertorTest | ||
{ | ||
|
||
|
||
|
||
[Theory] | ||
[InlineData("", "")] | ||
[InlineData("Бојан", "Bojan")] | ||
[InlineData("Миљан", "Miljan")] | ||
[InlineData("Џордан", "Dzordan")] | ||
[InlineData("Љубица", "Ljubica")] | ||
[InlineData("Ања", "Anja")] | ||
[InlineData("Џордан", "Džordan")] | ||
[InlineData("Ђорђе", "Đorđe")] | ||
[InlineData("Ђорђе", "Djordje")] | ||
[InlineData("Мирча", "Mirča")] | ||
public void Convert_different_cases_to_cyrilic(string expected, string param) | ||
{ | ||
TextConvertor _sut = new(); | ||
var actual = _sut.Convert(param); | ||
Assert.Equal(expected, actual); | ||
} | ||
[Theory] | ||
[InlineData("Bojan", "Бојан")] | ||
[InlineData("Miljan", "Миљан")] | ||
[InlineData("Ljubica", "Љубица")] | ||
[InlineData("Anja", "Ања")] | ||
[InlineData("Džordan", "Џордан")] | ||
[InlineData("Đorđe", "Ђорђе")] | ||
[InlineData("Mirča", "Мирча")] | ||
[InlineData("Mljdžpunjdžđ", "Мљџпуњџђ")] | ||
public void Convert_different_cases_to_latin(string expected, string param) | ||
{ | ||
TextConvertor _sut = new(ConversionType.ToLatin); | ||
var actual = _sut.Convert(param); | ||
Assert.Equal(expected, actual); | ||
} | ||
[Theory] | ||
[InlineData("bojan", "Бојан")] | ||
[InlineData("miljan", "Миљан")] | ||
[InlineData("ljubica", "Љубица")] | ||
[InlineData("anja", "Ања")] | ||
[InlineData("džordan", "Џордан")] | ||
[InlineData("đorđe", "Ђорђе")] | ||
[InlineData("mirča", "Мирча")] | ||
[InlineData("mljdžpunjdžđ", "Мљџпуњџђ")] | ||
public void Convert_different_cases_to_latin_all_lower_case(string expected, string param) | ||
{ | ||
TextConvertor _sut = new(ConversionType.ToLatin, CapitalisationType.AllLower); | ||
var actual = _sut.Convert(param); | ||
Assert.Equal(expected, actual); | ||
} | ||
[Theory] | ||
[InlineData(CapitalisationType.AllLower, "ја сам тестирао ово", "Ja Sam Testirao Ovo")] | ||
[InlineData(CapitalisationType.AllCapital, "ЈА САМ ТЕСТИРАО ОВО", "Ja Sam Testirao Ovo")] | ||
[InlineData(CapitalisationType.EveryFirstInWordCapital, "Ја Сам Тестирао Ово", "ЈА САМ ТЕСТИРАО ОВО")] | ||
[InlineData(CapitalisationType.FirstCapital, "Ја сам тестирао ово", "Ja Sam Testirao Ovo")] | ||
public void Convert_long_text_severat_capitalization(CapitalisationType type, string expected, string param) | ||
{ | ||
TextConvertor _sut = new(type); | ||
var actual = _sut.Convert(param); | ||
Assert.Equal(expected, actual); | ||
} | ||
[Theory] | ||
[InlineData("Ja sam samo # # #", "Ja sam samo bla bla bla")] | ||
[InlineData("Ja sam samo %%%% %%%% %%%%", "Ja sam samo sometest sometest sometest")] | ||
[InlineData("%%%%a sam samo %%%% %%%% %%%%", "sometesta sam samo sometest sometest sometest")] | ||
public void Convert_long_text_with_custom_letters_list(string expected, string param) | ||
{ | ||
var list = new List<Letter> | ||
{ | ||
new Letter("bla", "#"), | ||
new Letter("sometest","%%%%") | ||
}; | ||
TextConvertor _sut = new(list); | ||
var actual = _sut.Convert(param); | ||
Assert.Equal(expected, actual); | ||
} | ||
[Fact] | ||
public void Convert_long_string_from_Latin_to_Cyrilic() | ||
{ | ||
string expected = TestLongStringCyrilic(); | ||
TextConvertor _sut = new(); | ||
var actual = _sut.Convert(TestLongStringLatin()); | ||
Assert.Equal(expected, actual); | ||
} | ||
[Fact] | ||
public void Convert_long_string_from_Cyrilic_to_Latin() | ||
{ | ||
string expected = TestLongStringLatin(); | ||
TextConvertor _sut = new(ConversionType.ToLatin); | ||
var actual = _sut.Convert(TestLongStringCyrilic()); | ||
Assert.Equal(expected, actual); | ||
} | ||
|
||
|
||
|
||
|
||
private static string TestLongStringLatin() | ||
{ | ||
return @"U računarstvu , običan tekst je labav termin za podatke (npr. sadržaj datoteke) koji predstavljaju samo znakove čitljivog materijala, ali ne i njegov grafički prikaz niti druge objekte ( brojevi s pomičnim zarezom , slike, itd.). Takođe može uključivati ograničen broj."; | ||
} | ||
|
||
private static string TestLongStringCyrilic() | ||
{ | ||
return @"У рачунарству , обичан текст је лабав термин за податке (нпр. садржај датотеке) који представљају само знакове читљивог материјала, али не и његов графички приказ нити друге објекте ( бројеви с помичним зарезом , слике, итд.). Такође може укључивати ограничен број."; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
global using Xunit; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Globalization; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
using TextConvert.Enums; | ||
|
||
namespace TextConvert | ||
{ | ||
|
||
internal class Capitalization | ||
{ | ||
private CapitalisationType _capitalization; | ||
public CapitalisationType Capitalisation { get => _capitalization; set => _capitalization = value; } | ||
public Capitalization(CapitalisationType capitalization) | ||
{ | ||
_capitalization = capitalization; | ||
} | ||
|
||
public string ChangeCapitalization(string words) | ||
{ | ||
switch(_capitalization) | ||
{ | ||
case CapitalisationType.AllLower: | ||
return words.ToLower(); | ||
case CapitalisationType.AllCapital: | ||
return words.ToUpper(); | ||
case CapitalisationType.EveryFirstInWordCapital: | ||
return EveryFirstwordsCapital(words); | ||
case CapitalisationType.FirstCapital: | ||
return UppercaseFirst(words); | ||
case CapitalisationType.None: | ||
break; | ||
} | ||
return words; | ||
} | ||
|
||
private static string EveryFirstwordsCapital(string words) | ||
{ | ||
TextInfo textInfo = new CultureInfo("sr-RS", false).TextInfo; | ||
return textInfo.ToTitleCase(words.ToLower()); | ||
} | ||
|
||
static string UppercaseFirst(string s) | ||
{ | ||
s = s.ToLower(); | ||
if(string.IsNullOrEmpty(s)) | ||
return string.Empty; | ||
return char.ToUpper(s[0]) + s.Substring(1); | ||
} | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
|
||
namespace TextConvert.Enums | ||
{ | ||
public enum CapitalisationType | ||
{ | ||
AllLower = 0, | ||
AllCapital = 1, | ||
FirstCapital = 2, | ||
EveryFirstInWordCapital = 3, | ||
None = 4, | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
|
||
namespace TextConvert.Enums | ||
{ | ||
public enum ConversionType | ||
{ | ||
ToCyrilic = 0, | ||
ToLatin = 1 | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
using TextConvert.Enums; | ||
|
||
namespace TextConvert | ||
{ | ||
public interface ITextConvertor | ||
{ | ||
ConversionType ConversionType { get; set; } | ||
CapitalisationType CapitalisationType { get; set; } | ||
string Convert(string text); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
namespace TextConvert | ||
{ | ||
public class Letter | ||
{ | ||
public Letter(string key, string value) | ||
{ | ||
Value = value; | ||
Key = key; | ||
} | ||
|
||
public string Key { get; } | ||
public string Value { get; } | ||
} | ||
} |
Oops, something went wrong.