From fb6c5c0b611a81f1ebc165b93cdc01b90d153250 Mon Sep 17 00:00:00 2001 From: "a.teplyakov" <a.teplyakov@tinkoff.ru> Date: Wed, 15 Aug 2018 12:47:27 +0300 Subject: [PATCH] add test to check reimplementation of implisitly unwrapped optinal https://swift.org/blog/iuo/ --- EasyDi.xcodeproj/project.pbxproj | 8 +++- Tests/Test_ImplicitlyUnwrappedOptional.swift | 40 ++++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 Tests/Test_ImplicitlyUnwrappedOptional.swift diff --git a/EasyDi.xcodeproj/project.pbxproj b/EasyDi.xcodeproj/project.pbxproj index e3e1ae0..3ffc147 100644 --- a/EasyDi.xcodeproj/project.pbxproj +++ b/EasyDi.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 8BEE13521F9A27C800A02331 /* EasyDi.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BEE13501F9A27C800A02331 /* EasyDi.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BEE13531F9A27C800A02331 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8BEE13511F9A27C800A02331 /* Info.plist */; }; 8BEE13561F9A27EA00A02331 /* EasyDi.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BEE13551F9A27EA00A02331 /* EasyDi.swift */; }; 8BEE13571F9A27F200A02331 /* EasyDi.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BEE13551F9A27EA00A02331 /* EasyDi.swift */; }; C3614B541F1C8B6800B1F4A1 /* Test_Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3614B451F1C8B5F00B1F4A1 /* Test_Context.swift */; }; @@ -28,6 +27,8 @@ C37DEA341F1E9B2100279AD3 /* Test_ProtocolBasedInjection.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3614B491F1C8B5F00B1F4A1 /* Test_ProtocolBasedInjection.swift */; }; C37DEA351F1E9B2100279AD3 /* Test_Scope.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3614B4A1F1C8B5F00B1F4A1 /* Test_Scope.swift */; }; C37DEA361F1E9B2100279AD3 /* Test_StructsInjection.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3614B4B1F1C8B5F00B1F4A1 /* Test_StructsInjection.swift */; }; + D2B16C972123116500CF69E8 /* Test_ImplicitlyUnwrappedOptional.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B16C962123116500CF69E8 /* Test_ImplicitlyUnwrappedOptional.swift */; }; + D2B16C982123116500CF69E8 /* Test_ImplicitlyUnwrappedOptional.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B16C962123116500CF69E8 /* Test_ImplicitlyUnwrappedOptional.swift */; }; E6DCF5C61F2F62A600D9F8BC /* Test_CrossAssemblyInjections_SingletonCycle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6DCF5C41F2F62A000D9F8BC /* Test_CrossAssemblyInjections_SingletonCycle.swift */; }; E6DCF5C71F2F62A700D9F8BC /* Test_CrossAssemblyInjections_SingletonCycle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6DCF5C41F2F62A000D9F8BC /* Test_CrossAssemblyInjections_SingletonCycle.swift */; }; /* End PBXBuildFile section */ @@ -68,6 +69,7 @@ C37DEA1B1F1E9AA000279AD3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; C37DEA241F1E9AE500279AD3 /* EasyDi_macOS-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "EasyDi_macOS-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; C37DEA281F1E9AE500279AD3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + D2B16C962123116500CF69E8 /* Test_ImplicitlyUnwrappedOptional.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Test_ImplicitlyUnwrappedOptional.swift; sourceTree = "<group>"; }; E6DCF5C41F2F62A000D9F8BC /* Test_CrossAssemblyInjections_SingletonCycle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Test_CrossAssemblyInjections_SingletonCycle.swift; path = Tests/Test_CrossAssemblyInjections_SingletonCycle.swift; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ @@ -132,6 +134,7 @@ C3614B471F1C8B5F00B1F4A1 /* Test_Injections.swift */, C3614B481F1C8B5F00B1F4A1 /* Test_Patches.swift */, C3614B491F1C8B5F00B1F4A1 /* Test_ProtocolBasedInjection.swift */, + D2B16C962123116500CF69E8 /* Test_ImplicitlyUnwrappedOptional.swift */, C3614B4A1F1C8B5F00B1F4A1 /* Test_Scope.swift */, C3614B4B1F1C8B5F00B1F4A1 /* Test_StructsInjection.swift */, ); @@ -332,7 +335,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8BEE13531F9A27C800A02331 /* Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -359,6 +361,7 @@ files = ( C3614B571F1C8B6800B1F4A1 /* Test_Patches.swift in Sources */, C3614B551F1C8B6800B1F4A1 /* Test_CrossAssemblyInjections.swift in Sources */, + D2B16C972123116500CF69E8 /* Test_ImplicitlyUnwrappedOptional.swift in Sources */, C3614B591F1C8B6800B1F4A1 /* Test_Scope.swift in Sources */, C3614B541F1C8B6800B1F4A1 /* Test_Context.swift in Sources */, C3614B561F1C8B6800B1F4A1 /* Test_Injections.swift in Sources */, @@ -390,6 +393,7 @@ files = ( C37DEA361F1E9B2100279AD3 /* Test_StructsInjection.swift in Sources */, C37DEA331F1E9B2100279AD3 /* Test_Patches.swift in Sources */, + D2B16C982123116500CF69E8 /* Test_ImplicitlyUnwrappedOptional.swift in Sources */, C37DEA311F1E9B2100279AD3 /* Test_CrossAssemblyInjections.swift in Sources */, C37DEA321F1E9B2100279AD3 /* Test_Injections.swift in Sources */, C37DEA301F1E9B2100279AD3 /* Test_Context.swift in Sources */, diff --git a/Tests/Test_ImplicitlyUnwrappedOptional.swift b/Tests/Test_ImplicitlyUnwrappedOptional.swift new file mode 100644 index 0000000..9a844ee --- /dev/null +++ b/Tests/Test_ImplicitlyUnwrappedOptional.swift @@ -0,0 +1,40 @@ +// +// Test_ImplicitlyUnwrappedOptional.swift +// EasyDi +// +// Created by a.teplyakov on 14/08/2018. +// Copyright © 2018 AndreyZarembo. All rights reserved. +// + +import Foundation +import XCTest +import EasyDi +/* +As part of fully implementing (SE–0054), ImplicitlyUnwrappedOptional<T> is now an unavailable typealias of Optional<T>. Declarations annotated with ‘!’ have the type Optional<T>. If an expression involving one of these values will not compile successfully with the type Optional<T>, it is implicitly unwrapped, producing a value of type T. In some cases this will cause code that previously compiled to require updating. Please see this blog post for more information: (Reimplementation of Implicitly Unwrapped Optionals). (33272674) + + https://swift.org/blog/iuo/ +*/ +class Test_ImplicitlyUnwrappedOptional: XCTestCase { + + // Setup + + class ObjectGraphAssembly: Assembly { + + var testObject: TestObject { + return define(init: TestObject.object()) { + return $0 + } + } + } + + class TestObject { + class func object() -> TestObject! { + return TestObject() + } + } + + func testClassInitializator() { + let testObject = ObjectGraphAssembly.instance().testObject + XCTAssertNotNil(testObject) + } +}