Skip to content

Commit

Permalink
Merge pull request #39 from bookfx/zh/split-name
Browse files Browse the repository at this point in the history
split Box.Name into NameGlobally and NameLocally
  • Loading branch information
zhenyagusev committed Feb 11, 2022
2 parents 734d0f1 + 19afc92 commit 8c9b6a3
Show file tree
Hide file tree
Showing 31 changed files with 333 additions and 130 deletions.
3 changes: 2 additions & 1 deletion README-ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,8 @@ Make.Sheet("New Sheet Name", protoBook, "Prototype Sheet Name");
- `Sheet.Scale` - задать масштаб
- `Sheet.ToBook` - создать `Book` с одним листом
- `Box` - box любого вида
- `Box.Name` - задать имя области
- `Box.NameGlobally` - присвоить диапазону имя области книги
- `Box.NameLocally` - присвоить диапазону имя области листа
- `Box.AutoSpan` - включить режим `AutoSpan` для строк и колонок
- `Box.AutoSpanRows` - включить режим `AutoSpan` для строк
- `Box.AutoSpanCols` - включить режим `AutoSpan` для колонок
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,8 @@ See also the example [S5ProtoSheet.cs][s5protosheet.cs].
- `Sheet.Scale` - define a scale
- `Sheet.ToBook` - make a `Book` with one sheet
- `Box` - a box of any type
- `Box.Name` - define a name of the range
- `Box.NameGlobally` - define a book scoped name of the range
- `Box.NameLocally` - define a sheet scoped name of the range
- `Box.AutoSpan` - activate `AutoSpan` mode for rows and columns
- `Box.AutoSpanRows` - activate `AutoSpan` mode for rows
- `Box.AutoSpanCols` - activate `AutoSpan` mode for columns
Expand Down
6 changes: 3 additions & 3 deletions src/BookFx.Tests/BoxTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ public void Implicit_Row_RowBox()
}

[Property]
public void Name_NonNull_SetName(NonNull<string> name)
public void NameGlobally_NonNull_SetName(NonNull<string> name)
{
Box box = Make.Row();

var result = box.Name(name.Get);
var result = box.NameGlobally(name.Get);

result.Get.Name.Should().Be(Some(name.Get));
result.Get.GlobalName.Should().Be(Some(name.Get));
}
}
}
4 changes: 2 additions & 2 deletions src/BookFx.Tests/Calculation/MinDimensionCalcTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ public void MinDimension_ProtoWithoutSlots_AsProto(int protoHeight, int protoWid
.Value()
.SpanRows(protoHeight)
.SpanCols(protoWidth)
.Name(protoRef)
.NameGlobally(protoRef)
.ToSheet()
.ToBook()
.ToBytes();
Expand All @@ -168,7 +168,7 @@ public void MinDimension_ProtoWithSlotBox1x1_SlotBox1x1()
const string protoRef = "ProtoRef";
var protoBook = Make
.Value()
.Name(protoRef)
.NameGlobally(protoRef)
.ToSheet()
.ToBook()
.ToBytes();
Expand Down
4 changes: 2 additions & 2 deletions src/BookFx.Tests/Calculation/PlacementCalcTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -290,8 +290,8 @@ public void Place_ProtoWithSlot_SlotBoxPlaced()
var protoBook = Make
.Col(
"A",
Make.Value("Slot default value").Name(slotRef))
.Name(protoRef)
Make.Value("Slot default value").NameGlobally(slotRef))
.NameGlobally(protoRef)
.ToSheet()
.ToBook()
.ToBytes();
Expand Down
4 changes: 2 additions & 2 deletions src/BookFx.Tests/Calculation/ProtoBankTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public void GetRange_NameExists_Expected()
{
const string theRef = "Ref";
const string theValue = "Value";
var protoBook = Make.Value(theValue).Name(theRef).ToSheet().ToBook().ToBytes();
var protoBook = Make.Value(theValue).NameGlobally(theRef).ToSheet().ToBook().ToBytes();
var sut = new ProtoBank(List(protoBook));

var result = sut.GetRange(protoBook, theRef);
Expand All @@ -37,7 +37,7 @@ public void GetRange_NameNotExists_Invalid()
public void GetPosition_NameExists_Expected()
{
const string theRef = "Ref";
var protoBook = Make.Value().Name(theRef).ToSheet().ToBook().ToBytes();
var protoBook = Make.Value().NameGlobally(theRef).ToSheet().ToBook().ToBytes();
var sut = new ProtoBank(List(protoBook));

var result = sut.GetPosition(protoBook, theRef);
Expand Down
6 changes: 3 additions & 3 deletions src/BookFx.Tests/Calculation/ProtoCalcTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public void PlugProtos_ProtoBoxWithoutSlots_RangeIsExpected()
{
const string protoRef = "ProtoRef";
// A
var protoBook = Make.Value().Name(protoRef).ToSheet().ToBook().ToBytes();
var protoBook = Make.Value().NameGlobally(protoRef).ToSheet().ToBook().ToBytes();
var box = Make.Proto(protoBook, protoRef).Get;
var bank = new ProtoBank(List(protoBook));

Expand All @@ -37,8 +37,8 @@ public void PlugProtos_ProtoBoxWithSlotAtR2C1_SlotPositionIsR2C1()
// A
// B
var protoBook = Make
.Col("A", Make.Value("B").Name(slotRef))
.Name(protoRef)
.Col("A", Make.Value("B").NameGlobally(slotRef))
.NameGlobally(protoRef)
.ToSheet()
.ToBook()
.ToBytes();
Expand Down
4 changes: 2 additions & 2 deletions src/BookFx.Tests/Renders/BookRenderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class BookRenderTests
public void Render_ProtoSheet_NameCopiedInBookScope() =>
Packer.OnPackage(package => Make
.Value()
.Name(TheRangeName)
.NameGlobally(TheRangeName)
.ToSheet()
.ToBook()
.ToBytes()
Expand All @@ -59,7 +59,7 @@ public class BookRenderTests
public void Render_ProtoSheetAndNameExists_NameCopiedInSheetScope() =>
Packer.OnPackage(package => Make
.Value()
.Name(TheRangeName)
.NameGlobally(TheRangeName)
.ToSheet()
.ToBook()
.ToBytes()
Expand Down
53 changes: 53 additions & 0 deletions src/BookFx.Tests/Renders/BoxGlobalNameRenderTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
namespace BookFx.Tests.Renders
{
using BookFx.Epplus;
using BookFx.Renders;
using FluentAssertions;
using FsCheck.Xunit;
using Xunit;

[Properties(MaxTest = 10)]
public class BoxGlobalNameRenderTests
{
private const string TheValidName = "TheName";

[Fact]
public void GlobalNameRender_NoName_NotSet() =>
Packer.OnSheet(excelSheet =>
{
var excelRange = excelSheet.Cells[1, 1];
Make.Value().Get.GlobalNameRender()(excelRange);
excelRange.Worksheet.Workbook.Names.Should().BeEmpty();
});

[Fact]
public void GlobalNameRender_NonEmptyName_Set() =>
Packer.OnSheet(excelSheet =>
{
var box = Make.Value().NameGlobally(TheValidName).Get;
var excelRange = excelSheet.Cells[1, 1];
box.GlobalNameRender()(excelRange);
excelRange.Worksheet.Workbook.Names
.Should()
.HaveCount(1)
.And.OnlyContain(x => x.Name == TheValidName && x.Address == excelRange.Address);
});

[Fact]
public void GlobalNameRender_NameIsAlreadyExists_Error() =>
Packer.OnSheet(excelSheet =>
{
excelSheet.Workbook.Names.Add(TheValidName, excelSheet.Cells[2, 2]);
var box = Make.Value().NameGlobally(TheValidName).Get;
var excelRange = excelSheet.Cells[1, 1];
var result = box.GlobalNameRender()(excelRange);
result.IsValid.Should().BeFalse();
});
}
}
53 changes: 53 additions & 0 deletions src/BookFx.Tests/Renders/BoxLocalNameRenderTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
namespace BookFx.Tests.Renders
{
using BookFx.Epplus;
using BookFx.Renders;
using FluentAssertions;
using FsCheck.Xunit;
using Xunit;

[Properties(MaxTest = 10)]
public class BoxLocalNameRenderTests
{
private const string TheValidName = "TheName";

[Fact]
public void LocalNameRender_NoName_NotSet() =>
Packer.OnSheet(excelSheet =>
{
var excelRange = excelSheet.Cells[1, 1];
Make.Value().Get.LocalNameRender()(excelRange);
excelRange.Worksheet.Names.Should().BeEmpty();
});

[Fact]
public void LocalNameRender_NonEmptyName_Set() =>
Packer.OnSheet(excelSheet =>
{
var box = Make.Value().NameLocally(TheValidName).Get;
var excelRange = excelSheet.Cells[1, 1];
box.LocalNameRender()(excelRange);
excelRange.Worksheet.Names
.Should()
.HaveCount(1)
.And.OnlyContain(x => x.Name == TheValidName && x.Address == excelRange.Address);
});

[Fact]
public void LocalNameRender_NameIsAlreadyExists_Error() =>
Packer.OnSheet(excelSheet =>
{
excelSheet.Names.Add(TheValidName, excelSheet.Cells[2, 2]);
var box = Make.Value().NameLocally(TheValidName).Get;
var excelRange = excelSheet.Cells[1, 1];
var result = box.LocalNameRender()(excelRange);
result.IsValid.Should().BeFalse();
});
}
}
55 changes: 0 additions & 55 deletions src/BookFx.Tests/Renders/BoxNameRenderTests.cs

This file was deleted.

16 changes: 8 additions & 8 deletions src/BookFx.Tests/Validation/BookValidatorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,29 +38,29 @@ public void SheetNameUniqueness_NonUniqueSheetNames_Invalid()
}

[Fact]
public void BoxNameUniqueness_UniqueBoxNames_Valid()
public void BoxGlobalNameUniqueness_UniqueBoxNames_Valid()
{
var book = Make
.Book(
Make.Sheet(Make.Row(Make.Value().Name("AA"), Make.Value().Name("AB"))),
Make.Sheet(Make.Row(Make.Value().Name("BA"), Make.Value().Name("BB"))))
Make.Sheet(Make.Row(Make.Value().NameGlobally("AA"), Make.Value().NameGlobally("AB"))),
Make.Sheet(Make.Row(Make.Value().NameGlobally("BA"), Make.Value().NameGlobally("BB"))))
.Get;

var result = BookValidator.BoxNameUniqueness(book);
var result = BookValidator.BoxGlobalNameUniqueness(book);

result.IsValid.Should().BeTrue();
}

[Fact]
public void BoxNameUniqueness_NonUniqueBoxNames_Invalid()
public void BoxGlobalNameUniqueness_NonUniqueBoxNames_Invalid()
{
var book = Make
.Book(
Make.Sheet(Make.Value().Name("A")),
Make.Sheet(Make.Value().Name("A")))
Make.Sheet(Make.Value().NameGlobally("A")),
Make.Sheet(Make.Value().NameGlobally("A")))
.Get;

var result = BookValidator.BoxNameUniqueness(book);
var result = BookValidator.BoxGlobalNameUniqueness(book);

result.IsValid.Should().BeFalse();
}
Expand Down
10 changes: 6 additions & 4 deletions src/BookFx.Tests/Validation/BoxValidatorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -190,9 +190,9 @@ public void ColSizeRange_InvalidSizes_Invalid(double size)
[InlineData("")]
public void Name_ValidName_ValidResult(string rangeName)
{
var box = Make.Value().Name(rangeName).Get;
var box = Make.Value().NameGlobally(rangeName).Get;

var result = BoxValidator.Name(box);
var result = BoxValidator.Name(x => x.GlobalName)(box);

result.IsValid.Should().BeTrue();
}
Expand All @@ -201,6 +201,8 @@ public void Name_ValidName_ValidResult(string rangeName)
[InlineData("")]
[InlineData("1")]
[InlineData("123")]
[InlineData("1year")]
[InlineData("1год")]
[InlineData("A1")]
[InlineData("R1C1")]
[InlineData("rc")]
Expand All @@ -215,9 +217,9 @@ public void Name_ValidName_ValidResult(string rangeName)
[InlineData("=")]
public void Name_InvalidName_InvalidResult(string rangeName)
{
var box = Make.Value().Name(rangeName).Get;
var box = Make.Value().NameGlobally(rangeName).Get;

var result = BoxValidator.Name(box);
var result = BoxValidator.Name(x => x.GlobalName)(box);

result.IsValid.Should().BeFalse();
}
Expand Down
20 changes: 20 additions & 0 deletions src/BookFx.Tests/Validation/SheetValidatorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,26 @@ public void SheetName_InvalidNames_Invalid(string name)
SheetValidator.SheetName(sheet).IsValid.Should().BeFalse();
}

[Fact]
public void BoxLocalNameUniqueness_UniqueBoxNames_Valid()
{
var sheet = Make.Sheet(Make.Row(Make.Value().NameLocally("A"), Make.Value().NameLocally("B"))).Get;

var result = SheetValidator.BoxLocalNameUniqueness(sheet);

result.IsValid.Should().BeTrue();
}

[Fact]
public void BoxLocalNameUniqueness_NonUniqueBoxNames_Invalid()
{
var sheet = Make.Sheet(Make.Row(Make.Value().NameLocally("A"), Make.Value().NameLocally("A"))).Get;

var result = SheetValidator.BoxLocalNameUniqueness(sheet);

result.IsValid.Should().BeFalse();
}

[Fact]
public void Margins_Empty_Valid()
{
Expand Down
4 changes: 2 additions & 2 deletions src/BookFx.Tests/ValueBoxTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class ValueBoxTests
Make.Value(Unit()).Get.Content.ValueUnsafe().Should().BeOfType<Unit>();

[Property]
public void Name_NonNull_NameIsName(NonNull<string> name) =>
Make.Value().Name(name.Get).Get.Name.ValueUnsafe().Should().Be(name.Get);
public void NameGlobally_NonNull_GlobalNameIsName(NonNull<string> name) =>
Make.Value().NameGlobally(name.Get).Get.GlobalName.ValueUnsafe().Should().Be(name.Get);
}
}

0 comments on commit 8c9b6a3

Please sign in to comment.