Skip to content

Commit

Permalink
Add project files.
Browse files Browse the repository at this point in the history
  • Loading branch information
Bojan Pavlovic committed Dec 21, 2022
1 parent fffc779 commit 8ba8bcb
Show file tree
Hide file tree
Showing 14 changed files with 652 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[*.cs]

# IDE0057: Use range operator
dotnet_diagnostic.IDE0057.severity = none
32 changes: 32 additions & 0 deletions Convertor.Testing/Convertor.Testing.csproj
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>
113 changes: 113 additions & 0 deletions Convertor.Testing/LettersConvertorTest.cs
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 @"У рачунарству , обичан текст је лабав термин за податке (нпр. садржај датотеке) који представљају само знакове читљивог материјала, али не и његов графички приказ нити друге објекте ( бројеви с помичним зарезом , слике, итд.). Такође може укључивати ​​ограничен број.";
}
}
}
1 change: 1 addition & 0 deletions Convertor.Testing/Usings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
global using Xunit;
54 changes: 54 additions & 0 deletions LetterConvert/Capitalization.cs
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);
}

}
}
17 changes: 17 additions & 0 deletions LetterConvert/Enums/CapitalisationType.cs
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,
}
}
14 changes: 14 additions & 0 deletions LetterConvert/Enums/ConversionType.cs
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
}
}
11 changes: 11 additions & 0 deletions LetterConvert/ITextConvertor.cs
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);
}
}
14 changes: 14 additions & 0 deletions LetterConvert/Letter.cs
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; }
}
}
Loading

0 comments on commit 8ba8bcb

Please sign in to comment.